2016-06-13 61 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),因爲我從循環代碼的另一部分開始。 –