2016-03-24 3 views
0

Я использую следующий код для выбора данных из базы данных, в некоторых случаях это должно возвращать несколько результатов, и я не уверен, как вернуть все соответствующие результаты, такие как время бронирования в массив и курица это в окне списка.OleDbCommand Return Несколько строк

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 Injection] (http://www.troyhunt.com/2013/07/everything-you-wanted-to-know-about-sql.html). ** НИКОГДА не используйте конкатенацию строк для построения SQL-запроса. ** ВСЕГДА ** используйте параметризованный запрос. –

ответ

1

Создать класс Booking где вы создаете все необходимые свойства, как Time, Date (почему не эти два объединены в первую очередь?) И Description).

Тогда в вашем while, создать новую Booking и добавить его в список (List<Booking>), созданный вне цикла while. Верните этот список.

(Примечание: также используется using, чтобы избавиться от вашей команды. У вас есть память и утечка дескриптора, когда исключение вызывается перед закрытием команд. Что еще более важно, ваш код уязвим для SQL-инъекции. Всегда используйте параметры SQL.)

Смежные вопросы