2010-10-26 4 views
0

У меня есть структура в веб-службе в C#. Когда я использую «Выбрать * из таблицы 1»; в WebMethod я получаю полностью заполненную структуру. Но когда я добавляю предложение WHERE, я получаю null в ответ. Почему это? Я искал везде для простого объяснения, но не нашел его.использовать параметр при заполнении структуры с помощью набора данных C#?

Как я могу использовать SELECT * FROM TABLE1 WHERE _id=" + id "'"; Если я хочу получить только одно сообщение из базы данных, он отлично работает, но не тогда, когда я получаю ответ нескольких строк.

Есть ли способ заказать ответ нескольких строк любым способом в C#?

Заранее благодарен!

редактировать:

DataSet myDS = new DataSet(); 

    try 
    { 
     myConnection.Open(); 

     // Fill dataset with account data 
     //myCommand.Fill(myDS, "userdata"); 
     myAdapter.Fill(myDS, "toplista"); 

     myConnection.Close(); 

     int i = myDS.Tables["toplista"].Rows.Count; 
     toplista[] mytoplista = new toplista[i]; 
     i = 0; 


     foreach (DataRow row in myDS.Tables["toplista"].Rows) 
     { 
      mytoplista[i].name = row["_name"].ToString(); 
      mytoplista[i].points = int.Parse(row["_points"].ToString()); 
      mytoplista[i].level = row["_level"].ToString(); 

      i++; 
     } 
     return mytoplista; 
+0

Вам нужно выполнить итерацию по набору результатов и добавить список структур. – brumScouse

+1

Это очень сложно сказать, не видя никакого кода. Кстати, я предлагаю вам использовать параметризованный запрос вместо того, как вы в настоящее время получили предложение WHERE. –

ответ

1

Am Я правильно понять, что ваша структура представляет собой один кортеж из таблицы? Если это так, вы должны либо пытаться заполнить IEnumerable<MyStruct>, либо получить только первую совпадающую строку из вашей таблицы. В противном случае, что вы ожидаете от остальной части данных, которые возвращаются?

+0

Итак, это выше работает, когда я получаю все значения, но не тогда, когда я использую предложение WHERE в инструкции select. – kakka47

+0

Какая ошибка вы получаете, когда используете предложение WHERE? Возможно ли, что вы строите его неправильно? В этом вопросе я заметил, что перед идентификатором вам не хватает одной кавычки. Как указал Джон Скит, вы обязательно должны использовать параметризованный запрос по соображениям безопасности, но это также может помочь избежать ошибок, подобных этому. – StriplingWarrior

+0

Ошибка в том, что я вообще не получаю никаких данных, она ничего не возвращает. Возможно, я делаю много неправильно. Вот как это выглядит, я думаю, что кавычки в порядке: String mySQL = "SELECT * FROM tbl_test WHERE _id = '" + id + "'"; Я прочитал о IEnumberable , который вы предложили выше, но я должен прочитать больше, чтобы действительно понять это. В чем разница между IEnumberable и использованием цикла через набор данных, как я? – kakka47

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