2016-12-20 2 views
0

Привет, Я пытаюсь создать автоматическое заполнение в моем приложении. , но некоторые как его не заполняют массив. Кто-нибудь может мне помочь? Я новичок в C#, поэтому мне жаль глупых ошибок.SQL Sever считывает данные в массив в C#

private void autonrTextBox_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     try 
     { 


      int i = 0; 
      var check[i]; 
      using (var con2 = new SqlConnection(@"Data Source=DESKTOP-RSEBNR7;Initial Catalog=AudiDealer;Integrated Security=True")) 
      using (var cmd2 = new SqlCommand("SELECT * FROM auto where autonr = " + autonrTextBox.Text, con2)) 
      { 
       con2.Open(); 
       check = cmd2.ExecuteScalar(); 
       con2.Close(); 
       autonrTextBox.Text = check[0]; 
       kentekenTextBox.Text = check[1]; 
       merkTextBox.Text = check[2]; 
       modelTextBox.Text = check[3]; 
       kleurTextBox.Text = check[4]; 
       categorieTextBox.Text = check[5]; 
       pkSTextBox.Text = check[6]; 
       apkTextBox.Text = check[7]; 
       kilometerstandTextBox.Text = check[8]; 
       bijtellingTextBox.Text = check[9]; 
       energielabelTextBox.Text = check[10]; 
      } 
     } 
     catch 
     { 
      MessageBox.Show("Dit Auto nummer komt niet voor in de database. controleer deze en probeer opnieuw","Error"); 
     } 
    } 
+0

Посмотрите вверх Подготовленные утверждения –

+2

'ExecuteScalar' возвращает значение * single *, посмотрите на использование читатель + 'ExecuteReader' –

ответ

2

Вы должны использовать ExecuteReader(), даже если вы хотите прочитать одного записи (ExecuteScalar возвращает одно значение):

// I've hidden the connection string by ... 
using (var con2 = new SqlConnection(@"...")) { 
    // using will close connection for you, do not call Close() direct 
    con2.Open(); 

    // Let sql be readable and parametrized 
    string sql = 
    @"SELECT * 
     FROM auto 
     WHERE autonr = @prm_autonr"; 

    using (var cmd2 = new SqlCommand(sql, con2)) { 
    cmd2.Parameters.AddWithValue("@prm_autonr", autonrTextBox.Text); 

    using (var reader = cmd2.ExecureReader()) { 
     // Do we have any records? 
     if (reader.Read()) { 
     // To be on the safe side use Convert.ToString(): 
     // what if the database field is of type Number(8, 5)? NVarChar2(11)? 
     autonrTextBox.Text = Convert.ToString(reader[0]); 
     kentekenTextBox.Text = Convert.ToString(reader[1]); 
     merkTextBox.Text = Convert.ToString(reader[2]); 
     modelTextBox.Text = Convert.ToString(reader[3]); 
     kleurTextBox.Text = Convert.ToString(reader[4]); 
     categorieTextBox.Text = Convert.ToString(reader[5]); 
     pkSTextBox.Text = Convert.ToString(reader[6]); 
     apkTextBox.Text = Convert.ToString(reader[7]); 
     kilometerstandTextBox.Text = Convert.ToString(reader[8]); 
     bijtellingTextBox.Text = Convert.ToString(reader[9]); 
     energielabelTextBox.Text = Convert.ToString(reader[10]); 
     } 
    } 
    } 
} 
+0

Работал как шарм! Спасибо! –