2016-03-24 69 views
0

我使用下面的代碼從數據庫中選擇數據在某些情況下,這應該返回多個結果,我不知道如何返回所有匹配的結果,如所有預訂時間到一個數組和母雞使用這些在列表框中。OleDbCommand返回多行

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

您的代碼易受[SQL注入](http://www.troyhunt.com/2013/07/everything-you-wanted-to-know-about-sql.html)的影響。 **從不**使用字符串連接來構建SQL查詢。 **總是**使用參數化查詢。 –

回答

1

創建一個類Booking在其中創建所有相關的屬性,如TimeDate(爲什麼沒有這兩個組合在首位?)和Description)。

然後,在你while,創建一個新的Booking並將其添加到您的while循環之外創建的列表(List<Booking>)。返回該列表。 (注意:也可以使用using來處理你的命令,當命令關閉之前拋出異常時,你有內存和句柄泄漏,更重要的是,你的代碼容易受到SQL注入攻擊,總是使用SQL參數。 )