C# 在两个数据读取器之间切换
我有以下代码:C# 在两个数据读取器之间切换,c#,sql,ado.net,C#,Sql,Ado.net,我有以下代码: private void supplBox_SelectedIndexChanged(object sender, EventArgs e) { if (sqlcon.State == ConnectionState.Closed) { sqlcon.Open(); } cmd = new SqlCommand("Select * from Supplier_info where Supplier_name = '" + supplBox.Te
private void supplBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (sqlcon.State == ConnectionState.Closed)
{
sqlcon.Open();
}
cmd = new SqlCommand("Select * from Supplier_info where Supplier_name = '" + supplBox.Text + "'", sqlcon);
cmd.ExecuteNonQuery();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
suppNum.Text = Convert.ToString(reader.GetInt32(0));
}
reader.Close();
sqlcon.Close();
barCode1.Focus();
}
private void suppNum_KeyUp(object sender, KeyEventArgs e)
{
if (sqlcon.State == ConnectionState.Closed)
{
sqlcon.Open();
}
cmd = new SqlCommand("Select * from Supplier_info where Supplier_id = '" + suppNum.Text + "'", sqlcon);
cmd.ExecuteNonQuery();
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
supplBox.Text = reader.GetString(1);
}
reader.Close();
sqlcon.Close();
barCode1.Focus();
}
在supplBox和suppNum之间切换时,出现以下错误:
已存在与此命令关联的打开的DataReader,必须先关闭该命令
如果我将MultipleActiveResultSets=true
添加到我的连接中,我会得到以下错误:
当读卡器关闭时调用Read的尝试无效
请帮忙连接很便宜。在需要时创建它们,并在获得所需内容后关闭/处置。不要跨多个方法/调用共享连接,这是不值得的。使用(SqlConnection sqlcon=new-SqlConnection(connectionString)){//您的代码}您的代码容易受到SQL注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者使用恶意输入值破坏您的数据库。给出了风险的解释,以及如何使用ADO.NET安全地编写查询的一些示例。永远不要将未初始化的数据直接插入SQL。谢谢大家,但我需要更正我的代码,这样任何人都可以编写正确的代码,这样我就可以轻松地发现我的错误吗?是的,我已经尝试了@5740382代码,它工作得很好,非常感谢