2013-07-29 5 views
1

Я новичок в WPF. Я получаю следующее сообщение об ошибке: «Лучший перегружен матч сообщение для System.Data.Common.DbDataReader.GetInt32 имеет некоторые недопустимые аргументы»Ошибка при чтении из базы данных

Мой код выглядит следующим образом:

private void comboBoxDisplay_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     string constring = "Data Source=tcp:******.database.windows.net;Initial  Catalog=*****;Persist Security Info=True;User ID=*****;Password=******"; 

     string Query = "select * from Rewards where Name='" + comboBoxDisplay.Text + "' ;"; 
     SqlConnection conDataBase = new SqlConnection(constring); 
     SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase); 
     SqlDataReader myReader; 

     try 
     { 
      conDataBase.Open(); 
      myReader = cmdDataBase.ExecuteReader(); 

      while (myReader.Read()) 
      { 

       string sReid = myReader.GetInt32(0).ToString(); 
       string sName = myReader.GetString(1); 



      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     }` 

ответ

0

В System.Data.Common .DbDataReader.GetInt32 ожидает целое число, которое является порядковым номером столбца. Нет перегруженных методов, которые берут строку в качестве параметра.

myReader.GetInt32(2); // gets the 3rd column (zero based) 
+0

Это избавило от ошибки, но когда я выбираю из поля со списком, значения не отображаются в текстовых полях. – user2631662

1

Методы GetXXX используют номер столбца, а не имя. Вам также не нужно бросать, если вы вызываете правильный метод. Попробуйте это

while (myReader.Read()) 
     { 

      string sReid = myReader.GetString(myReader.GetOrdinal("reID")); 
      string sName = myReader.GetString(myReader.GetOrdinal("Name")); 


     } 
+0

Не распознает GetOrdinal – user2631662

+0

Я изменил свой код, чтобы исправить это. Извините за ошибку. Просто примечание. Вероятно, вы должны обернуть это все в try/catch в случае ошибок (неправильные имена столбцов, неправильный формат базы данных и т. Д.). – steveg89

+0

Спасибо! Вы знаете, почему я получаю значения ранее выбранного элемента из поля со списком, отображаемого в текстовом поле вместо фактического выбранного элемента? – user2631662

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