为什么要在循环里关闭dr21?
dr21.Close();
dr21.Dispose();
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
dr21.Close();
dr21.Dispose();
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
解决方案 »
- C# winform 项目中序列化
- 局部放大软件遇到瓶颈,说下我的思路,大家可以来讨论下么?
- 那边没人 来这边发帖求助 关于观察者模式
- C#一个对象数组的问题
- ■■■■■■■■■■■■■■■■求一公式,计算 有 x 个核心的多核芯片 最适合开几个子线程■■■■■■■■■■■■■■■■
- C# 中listBox的问题:选中一个项,弹出一个对话框,显示其下一行的值,并且选中的状态不改变
- 关于对内容增删改及人员上下级权限的问题
- 请问大家VS2003能不能针对asp2.0进行开发?
- 如何实现手绘的打印预览???
- 关于VS2005打包工具的问题
- c#水波纹效果控件问题
- 如何改变EntityFramework的代码生成策略?
dr21.Dispose();的话不执行下面的SQL语句啊,不关闭的话就会提示已有打开的与此命令相关联的DataReader,必须首先将它关闭。
拉到while外面去。都Close了自然不能再Read了。
dr21.Dispose();放While外面,循环完毕再关掉,你第一次循环就关掉了,第二次循环当然有这提示了
可以写成函数方式,类似这样:
private void button4_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand(); ;
cmd.CommandText = "select top 100 * from lwmain where bj='0' order by id";
SqlDataReader dr21 = cmd.ExecuteReader();
while (dr21.Read())
{
string dd = dr21["dd"].ToString();
string xjsj = dr21["xjsj"].ToString();
sqldata(dd,xjsj);
}
dr21.Close();
dr21.Dispose(); }
public void sqldata(string s1, string s2)
{
SqlConnection con = new SqlConnection("Data Source=10.168.1.5;Initial Catalog=data;User ID=sa;password=sa;Integrated Security=False");
con.Open();
string sql = "select * from lwjhkh where kssj<='" + s2 + "' and jssj>='" + s2 + "' and dd='" + s1 + "' and khzt='未到' and jhms='未到'";
SqlCommand cmd = new SqlCommand(sql,con);
cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();
}