2010-06-25 32 views
2

J'ai créé un bouton (Next) pour naviguer dans une table appelée CHAPTERS;OleDbException (0x80004005): Erreur non spécifiée?

Mon problème est que le bouton fonctionne deux, et parfois trois fois. Après cela, je reçois [Erreur non spécifiée].

Ceci est mon code:

Dim S As Integer = Integer.Parse(Request.QueryString("id")) 
Dim RQ As String 
Dim DR As OleDbDataReader 
RQ = "SELECT ID_C FROM CHAPTRES" 
DR = Connexion.lecture(RQ) 
While DR.Read 
    If DR.GetInt32(0) = S Then 
      Exit While 
     End If 
    End While 

    If DR.Read = True Then 
     S = DR.GetInt32(0) 
     Response.Redirect("Chapitre.aspx?id=" & S) 
    Else 
     // End of records (stop reading) 
    End If 

Merci.

UPDATES :

Ce connecter et les lecture fonctions dans mon dossier Connexion.vb:

Imports Microsoft.VisualBasic 
Imports System.Data 
Imports System.Data.OleDb 
Imports System.Data.SqlClient 

Public Class Connexion 

Public Shared Function conecter() As OleDbConnection 
    Dim MyConnexion As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & System.AppDomain.CurrentDomain.BaseDirectory & "/Learning.mdb") 
    MyConnexion.Open() 
    Return MyConnexion 
End Function 

Public Shared Function lecture(ByVal requete As String) As OleDbDataReader 
    Dim Mycommand As OleDbCommand = conecter().CreateCommand() 
    Mycommand.CommandText = requete 
    Dim myReader As OleDbDataReader = Mycommand.ExecuteReader() 
    Return myReader 

End Function 

Répondre

1

Votre problème est probablement que vous ne fermez pas/votre disposition OleDbDataReader. L'appel Response.Redirect vous amène à une autre page sans fermer le lecteur de données ouvertes.

Essayez de modifier votre dernier morceau de code à ceci:

If DR.Read = True Then 
    S = DR.GetInt32(0) 
    DR.Close() 
    DR.Dispose() 
    Response.Redirect("Chapitre.aspx?id=" & S) 
Else  
    // End of records (stop reading) 
End If 

Mise à jour: Il serait évidemment utile si vous avez fourni plus d'informations, comme peut-être exactement ce que la ligne de code dans cet exemple est de lancer l'exception.

+0

c'est toujours le même problème –

+0

@AZIRAR: vous n'avez pas à décliner une réponse juste parce qu'elle n'est pas correcte. Je réserve généralement des réductions pour des réponses grossièrement inexactes susceptibles d'induire autrui en erreur. Dans votre cas, vous devriez avoir l'habitude de fermer les lecteurs de données, que ce soit ou non la cause de votre problème actuel. – MusiGenesis

+0

même si je ferme le lecteur de données je reçois toujours la même erreur –