2016-06-13 65 views
0

我有一个表2场“医学生”和“Listino”,所以我只需要选择Listino那里的领域“医学生” = Medhi访问数据库选择用VB.NET代码

MEDICO  LISTINO 
--------------------- 
Medhi   Gheller 
Ashi   Cadon 
Pamdo   Gheller 


result: 
Gheller 

因为Medhi有 'Listino' Gheller

下面的代码

Public DBPath As String = "Listini.accdb" 
    Public StringaConn As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= " & DBPath & "" 
    Public DBConn As New OleDbConnection(StringaConn) 

    Dim Medico As String = "Medhi" 
    DBConn.Open() 
    Dim DBCommAssociazione As OleDbCommand = DBConn.CreateCommand 
    DBCommAssociazione.CommandType = CommandType.Text 
    DBCommAssociazione.CommandText = "SELECT Listino FROM Associazioni WHERE Medico=Medhi" 

    Dim reader As OleDbDataReader 
    reader = DBCommAssociazione.ExecuteReader 

    While reader.Read() 
     Me.ListBox1.Items.Add(reader(0)) 
     Me.ListBox1.Items.Add(reader(1)) 

    End While 

    DBConn.Close() 

谢谢。

+0

Medico是一个文本字段。要在这一列搜索一个常数值,你需要把单引号放在常量值'Mehdi' – Steve

回答

1

你缺少科茨''查询WHERE Medico='Medhi',但我建议你使用参数,以避免SQL注入,像这样:

Dim Medico As String = "Medhi" 
DBConn.Open() 
Dim DBCommAssociazione As OleDbCommand = DBConn.CreateCommand 
DBCommAssociazione.CommandType = CommandType.Text 
DBCommAssociazione.CommandText = "SELECT Listino FROM Associazioni WHERE [email protected]" 
DBCommAssociazione.Parameters.AddWithValue("@Medico", Medico) 

Dim reader As OleDbDataReader 
reader = DBCommAssociazione.ExecuteReader 

While reader.Read() 
    Me.ListBox1.Items.Add(reader(0)) 
End While 
+0

非常感谢! –

0

医学生是一个文本字段。要搜索此列上的值,应该在单引号之间放置常量值。但是在更现实的情况下,您需要根据用户的输入搜索特定的Medico。

所以,你应该使用如下代码

Public DBPath As String = "Listini.accdb" 
Public StringaConn As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= " & DBPath & "" 

Using DBConn = New OleDbConnection(StringaConn) 
Using DBCommAssociazione = DBConn.CreateCommand 
    DBConn.Open() 
    Dim Medico = WhateverMethodYouHaveToReturnAMedicoFromUserInput() 
    DBCommAssociazione.CommandText = "SELECT Listino FROM Associazioni WHERE [email protected]" 

    DBCommAssociazione.Parameters.Add("@medico", OleDbType.VarWChar).Value = Medico 
    Using reader = DBCommAssociazione.ExecuteReader 
     While reader.Read() 
      Me.ListBox1.Items.Add(reader(0)) 
     End While 
    End Using 
End Using 

还要注意查询只返回一个字段。在While循环中,您尝试读取两个字段(reader(0)和reader(1)),这会给您一个ArgumentOutOfRangeException。 DataReader在一次处理一条记录,并且只有在调用Read方法时才加载新记录。

+0

谢谢你!是的,我忘记了阅读器(1),因为我从循环代码的另一部分开始。 –