SQL SEVER读取数据到C#中的数组



嗨,我正在尝试在我的应用程序中创建一个自动填充。但是有些不填充阵列。有人能帮我吗?我是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");
        }
    }

即使要读取 single record( ExecuteScalar返回单值),也必须使用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]);
      } 
    }
  }
}

您必须使用executereader。ExecutesCalar仅返回单个数据。例如:计数,总和,最大。聚合功能

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

最新更新