C# 已存在与此命令关联的打开的DataReader,必须先关闭该命令。
我有一个用于申请编号的组合框。从组合框中选择请购单编号时,我们应获得申请该特定请购单的成本中心。代码如下:C# 已存在与此命令关联的打开的DataReader,必须先关闭该命令。,c#,winforms,C#,Winforms,我有一个用于申请编号的组合框。从组合框中选择请购单编号时,我们应获得申请该特定请购单的成本中心。代码如下: cmd.Connection = con; if (con.State != ConnectionState.Open) { con.Open(); } txtcc.Text = ""; if (cmbreqno.SelectedValue != null || Conv
cmd.Connection = con;
if (con.State != ConnectionState.Open)
{
con.Open();
}
txtcc.Text = "";
if (cmbreqno.SelectedValue != null || Convert.ToString(cmbreqno.SelectedValue) != "")
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_displaycostcenter";
cmd.Parameters.AddWithValue("@req_no", cmbreqno.SelectedValue);
SqlDataReader rdr = cmd.ExecuteReader();
adp.Fill(dsreqno,"selectedpurchase");
if (dsreqno.Tables["selectedpurchase"].Rows.Count > 0)
{
txtcc.Text = dsreqno.Tables["selectedpurchase"].Rows[0]["req_no"].ToString();
}
dsreqno.Tables["selectedpurchase"].Clear();
}
cmd.Parameters.Clear();
//rdr.Close();
con.Close();
试试这个:
if (con.State != ConnectionState.Open)
{
con.Open();
}
txtcc.Text = "";
if (cmbreqno.SelectedValue != null || Convert.ToString(cmbreqno.SelectedValue) != "")
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_displaycostcenter";
cmd.Parameters.AddWithValue("@req_no", cmbreqno.SelectedValue);
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
txtcc.Text= rdr[0].ToString();//assuming sp_displaycostcenter returns costcenter.
}
rdr.Close();
}
con.Close();
您可以使用MSDN()中的标准代码块读取如下所示的数据,并用自己的变量替换变量:
private static DataSet SelectRows(DataSet dataset,
string connectionString,
string queryString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand( queryString, connection);
adapter.Fill(dataset);
return dataset;
}
}
在代码中,这一行显然被注释掉了://rdr.Close();它没有任何区别。我尝试过使用那一行。仍然是相同的错误。为什么要在第二个“if”语句的第一行中重新创建相同的连接?如果不使用该rdr变量(SqlDataReader rdr=cmd.ExecuteReader();),为什么要使用它?请编辑我的代码并告诉我您到底在说什么。我还在想办法。