2009-03-28 5 views
0

J'utilise MySQL 5.0 comme back-end. J'utilise MySqlData.dll dans mon projet. Quand je suis en train d'exécuter le code suivant,Utilisation de plusieurs lecteurs de données dans VB.NET 2005 ou C# .NET 2005 avec MySQL 5.0 comme back end

Essayez Dim cnData As New MySql.Data.MySqlClient.MySqlConnection Dim LCMD, lcmd1 As New MySql.Data.MySqlClient.MySqlCommand Dim LDR, ldr1 Comme MySql.Data .MySqlClient.MySqlDataReader

 cnData.ConnectionString = "SERVER=localhost;Uid=root;Pwd=root;Database=mytestdatabase" 
     cnData.Open() 
     lcmd = New MySql.Data.MySqlClient.MySqlCommand("select uom_id,uom_name from uom", cnData) 
     ldr = lcmd.ExecuteReader 
     While ldr.Read 
      lcmd1 = New MySql.Data.MySqlClient.MySqlCommand("select uom_id,uom_name from uom1 where uom_id=" & ldr.Item("uom_id") & "", cnData) 
      ldr1 = lcmd1.ExecuteReader 
      While ldr1.Read 
       MsgBox(ldr1.Item("uom_id")) 
       MsgBox(ldr1.Item("uom_name")) 
      End While 
      ldr1.Close() 
     End While 
     ldr.Close() 
     con.Close() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 

Je reçois un message d'erreur « Il existe déjà une OpenDataReader associée à cette connexion qui doit d'abord être fermé. » Je dois utiliser plusieurs chevaucheurs de données. Où je me suis trompé? Quelqu'un peut-il m'aider s'il-vous-plaît. Cela m'aidera beaucoup.

Sivakumar.P

+0

ce que vous en train d'essayer de le faire? –

+0

... aussi ce code ne compile pas! con.Close() doit être cnData.Close –

Répondre

1

Ce code est l'équivalent de ce que vous essayez de faire:

Try 
    Dim cnData As New MySql.Data.MySqlClient.MySqlConnection 
    Dim lcmd As MySql.Data.MySqlClient.MySqlCommand 
    Dim ldr As MySql.Data.MySqlClient.MySqlDataReader 

    cnData.ConnectionString = "SERVER=localhost;Uid=root;Pwd=root;Database=mytestdatabase" 
    cnData.Open() 
    lcmd = New MySql.Data.MySqlClient.MySqlCommand("select uom1.uom_id, uom1.uom_name from uom join uom1 ON uom.uom_id = uom1.uom_id ORDER BY uom_id", cnData) 
    ldr = lcmd.ExecuteReader 
    While ldr.Read 
     MsgBox(ldr.Item("uom_id")) 
     MsgBox(ldr.Item("uom_name")) 
    End While 
    ldr.Close() 
    cnData.Close() 

Catch ex As Exception 
    MsgBox(ex.Message) 
End Try