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