2010-03-18 5 views
0

Je suis en train de lire à partir de deux tables dans une base MySQL:Lire à partir de plusieurs tables dans le lecteur de données vb.net

Dim sqlcom As MySqlCommand = New MySqlCommand("Select * from mother, father where IDNO= '" & TextBox14.Text & "' ", sqlcon) 

Je reçois cette -Mais erreur:

Column 'IDNO' in where clause is ambiguous 

Voici l'ensemble code:

Dim NoAcc As String 
     Dim NoAccmod2 As String 
     Dim NoPas As String 

     Dim sqlcon As New MySqlConnection("Server=localhost; Database=school;Uid=root;Pwd=nitoryolai123$%^;") 
     Dim sqlcom As MySqlCommand = New MySqlCommand("Select * from mother, father where IDNO= '" & TextBox14.Text & "' ", sqlcon) 

     sqlcon.Open() 


     Dim rdr As MySqlDataReader 
     rdr = sqlcom.ExecuteReader 


     If rdr.HasRows Then 
      rdr.Read() 
      NoAcc = rdr("IDNO") 
      If (TextBox14.Text = NoAcc) Then TextBox7.Text = rdr("MOTHER") 
      If (TextBox14.Text = NoAcc) Then TextBox8.Text = rdr("MOTHER_OCCUPATION") 
      If (TextBox14.Text = NoAcc) Then TextBox10.Text = rdr("FATHER") 
      If (TextBox14.Text = NoAcc) Then TextBox11.Text = rdr("FATHER_OCCUPATION") 
     End If 

-Toutes les suggestions qui pourraient aider à résoudre ce problème? Ou même d'autres techniques pour atteindre l'objectif de lire des données à partir de deux tables à l'aide d'un lecteur de données?

C'est un WinForm, pas un formulaire web

+0

Pour votre information, votre code est soumis aux attaques par injection SQL. http://stackoverflow.com/questions/tagged/sql-injection – Josh

Répondre

0

Essayez ceci sur votre commande:

Dim sqlcom As MySqlCommand = New MySqlCommand("Select * from mother, father where mother.IDNO= '" & TextBox14.Text & "' AND father.IDNO = '" & TextBox14.Text & "'", sqlcon) 
1

Sans voir le schéma de vos tables, je ne peux pas dire avec certitude, mais je suppose que vos colonnes d'identité portent le même nom dans les deux tables. Pour contourner cela, vous aurez besoin de qualifier complètement celui que vous cherchez, en utilisant mother.IDNO ou father.IDNO (ou mother.IDNO AND father.IDNO).

+0

oui ils ont tous deux IDNO comme clé primaire – user225269

+0

Barry a raison. Le problème n'a rien à voir avec .NET, mais plutôt la requête. Si vous avez publié la même requête dans Management Studio ou LINQpad, la même erreur s'affichera. – Josh

+0

à droite, je reçois la même erreur lorsque je l'interroge sur mysql, quelle serait la bonne requête? – user225269

0

Si (TextBox14.Text = noacc) Alors TextBox7.Text = rdr ("mère")

Si (TextBox14.Text = noacc) Ensuite TextBox8 .Text = rdr ("MOTHER_OCCUPATION")

Si (TextBox14.Text = noacc) = Alors TextBox10.Text rdr ("père")

Si (TextBox14.Text = noacc) = Alors TextBox11.Text rdr ("OCCUPATION DU PÈRE")

Apparemment plutôt redondant/inefficace n'est-ce pas?

Aussi, vous pouvez essayer d'utiliser un INNER JOIN au lieu de double IDNO « Où » s

Questions connexes