C# SQL服务器在C中向数组读取数据#

C# SQL服务器在C中向数组读取数据#,c#,sql-server,xaml,C#,Sql Server,Xaml,嗨,我正在尝试在我的应用程序中创建一个自动填充。 但也有一些人认为它并没有填满数组。有人能帮我吗? 我是C#的新手,所以我为愚蠢的错误感到抱歉 private void autonrTextBox_TextChanged(object sender, TextChangedEventArgs e) { try { int i = 0; var check[i]; using (va

嗨,我正在尝试在我的应用程序中创建一个自动填充。 但也有一些人认为它并没有填满数组。有人能帮我吗? 我是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");
        }
    }

您必须使用ExecuteReader。ExecuteScalar仅返回单个数据。例如:计数、求和、最小、最大聚合函数


您必须使用ExecuteReader。ExecuteScalar仅返回单个数据。例如:计数、求和、最小、最大聚合函数


即使要读取单个记录(
ExecuteScalar
返回单个值),也必须使用
ExecuteReader()


即使要读取单个记录(
ExecuteScalar
返回单个值),也必须使用
ExecuteReader()


查找准备好的语句
ExecuteScalar
返回一个值,查看使用reader+
ExecuteReader
查找准备好的语句
ExecuteScalar
返回一个值,查看使用reader+
ExecuteReader
工作得很有魅力!非常感谢。工作得很有魅力!非常感谢。
// 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]);
      } 
    }
  }
}