一旦使用我的组合框从我的数据库中检索具有整数数据类型的记录,我总是会收到以下错误:
将varchar值'System.Data.DataRowView'转换为数据类型int时转换失败。
当我替换查询并检索具有varchar数据类型的记录时,它可以正常工作。
有人可以帮我修改我的代码以获得预期的输出吗?
这是我的代码:
public void fillSupplier()
{
SqlConnection conn = new SqlConnection("Data Source=STATION21\\SQLEXPRESS;Initial Catalog=mydb;Integrated Security=true");
conn.Open();
string query = "Select supID from Supplier";
SqlCommand cmd= new SqlCommand(query,conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0) {
cmbSupp.DataSource = dt;
cmbSupp.DisplayMember = "supID";
cmbSupp.ValueMember = "supID";
}
}
private void cmbSupp_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("Data Source=STATION21\\SQLEXPRESS;Initial Catalog=mydb;Integrated Security=true");
conn.Open();
this.Refresh();
string query = "Select * from Supplier where supID='"+cmbSupp.Text+"'";
SqlCommand cmd = new SqlCommand(query,conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read()) {
tbsName.Text = dr["supName"].ToString();
tbsContact.Text = dr["supLocation"].ToString();
tbsLoc.Text = dr["supContact"].ToString();
}
}
答案 0 :(得分:1)
将其替换为(删除单个撇号,表示字符串文字):
string query = "Select * from Supplier where supID = " + cmbSupp.Text;
另外,请查看参数化查询。你不太可能遇到这样的问题,特别是当你正在执行的查询有很多参数时。
string query = "Select * from Supplier where supID = @supID";
...
cmd.Parameters.AddWithValue("@supID", int.Parse(cmbSupp.Text));
这里有一些good reading material,带有示例。