2016-03-24 14 views
0

Ich verwende den folgenden Code, um Daten aus einer Datenbank auszuwählen, in einigen Fällen sollte dies mehrere Ergebnisse zurückgeben, und ich bin mir nicht sicher, wie alle übereinstimmenden Ergebnisse wie alle Buchungszeiten in ein Array und Huhn Verwendung zurückgeben diese in einer Listbox.OleDbCommand Rückgabe mehrere Zeilen

myConn.ConnectionString = connection.dbdataSource; 
OleDbCommand selectServiceNo = myConn.CreateCommand(); 
selectServiceNo.CommandText = 
    "SELECT ID, BookingTime, BookingDate, Description FROM booking"; 

selectServiceNo.CommandText += " WHERE BookingDate = #"; 
selectServiceNo.CommandText += dateSelected; 
selectServiceNo.CommandText += "#"; 

myConn.Open(); 
OleDbDataReader myDR2 = selectServiceNo.ExecuteReader(); 
while (myDR2.Read()) 
{ 
    bTime = Convert.ToString(myDR2["BookingTime"]); 
    bDate = Convert.ToString(myDR2["BookingDate"]); 
} 
myConn.Close(); 
+0

Ihr Code ist anfällig für [SQL-Injektion] (http://www.troyhunt.com/2013/07/everything-you-wanted-to-know-about-sql.html). ** NIEMALS ** String-Verkettung verwenden, um eine SQL-Abfrage zu erstellen. ** Verwenden Sie IMMER ** eine parametrisierte Abfrage. –

Antwort

1

Erstellen Sie eine Klasse Booking in dem Sie alle relevanten Eigenschaften erstellen, wie Time, Date (warum nicht diese beiden in erster Linie kombiniert werden?) Und Description).

Dann in Ihrem while, erstellen Sie einen neuen Booking und fügen Sie ihn in einer Liste (List<Booking>) Sie außerhalb der while Schleife erstellt. Gebe diese Liste zurück.

(Hinweis: Verwenden Sie auch using, um Ihren Befehl zu entsorgen. Sie haben Speicher und behandeln Lecks, wenn eine Ausnahme ausgelöst wird, bevor die Befehle geschlossen wird. Wichtiger ist Ihr Code anfällig für SQL-Injektion. Verwenden Sie immer SQL-Parameter.)