int st1, st2;
SqlDataReader rd;
SqlDataReader rd1;
private void connection()
{
if (cn.State == ConnectionState.Open)
{
cn.Close();
}
cn.Open();
}
private void button2_Click(object sender, EventArgs e)
{
connection();
this.st1 = Convert.ToInt32(txtC.Text);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandText = ("select * from OrderedFood where coustomerId=@CoustomerId");
cmd.Parameters.AddWithValue("@CoustomerId", this.st1);
rd = cmd.ExecuteReader();
while (rd.Read())
{
this.st2 = Convert.ToInt32(rd.GetValue(2).ToString());
MessageBox.Show(st2.ToString());
SqlCommand cmd1 = new SqlCommand();
cmd1.Connection = cn;
cmd1.CommandText = ("select [name] from Food where id=@FoodId");
cmd1.Parameters.AddWithValue("@FoodID", this.st2);
rd1 = cmd1.ExecuteReader();
if (rd1.Read())
{
string z;
z = rd1.GetValue(0).ToString();
for (int i = 0; i <= (checkedListBox1.Items.Count - 1); i++)
{
checkedListBox1.SetItemChecked(i, false);
string x = checkedListBox1.Items[i].ToString();
if (z == x)
{
checkedListBox1.SetItemChecked(i, true);
}
}
}
}
}
现在,这显示了一个错误"已经有一个开放的DataReader,必须先关闭命令。"
但如果是读者密切的数据,我可以不能够得到而(rd.Read())
读者剂量完成retrive数据。所以,我应该怎么做?