2016-12-20 20 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 *値を返します。 reader + 'ExecuteReader' –

答えて

2

// 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

チャームのように働いた!ありがとうございました! –

1

ExecuteReaderを使用する必要があります。 ExecuteScalarは単一のデータのみを返します。例:カウント、合計、最小、最大。集約関数あなたは単一レコード(ExecuteScalar単一の値を返す)を読みたい場合でもExecuteReader()を使用する必要が

https://msdn.microsoft.com/en-us/library/9kcbe65k(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx

関連する問題