刷新程序的时候出错

atmo 2013-10-21 10:59:04
有一个网站,正常访问没有问题,如果按住F5不放 网站会报错
提示的错误也每次不一样,有的时候提示 未将对象引用设置到对象的实例 有的时候提示 内部 .Net Framework 数据提供程序错误 12 有的时候提示 ExecuteReader: Connection 属性尚未初始化,反正每次提示不尽相同,
从网上查大部分原因都是数据库连接没有及时关闭

我的代码如果给断点,看程序f11执行,没有问题,该关的都关了 ,顺序也对

但是我开始调试的时候,程序执行到断点的时候,这时候打开调试网页强制按住F5,会发生如下的结果 如代码

try
{
OpenConn();
comm.CommandType = CommandType.Text;
comm.CommandText = strSql;
da.SelectCommand = comm;
da.Fill(ds);
return ds;
}

比如我断点到OpenConn(),程序停在那里,这个时候我打开调试网页,按住F5 强制刷新,继续按f11调试,会发现 OpenConn()执行完一次,又会跳到try下面的括号,继续执行OpenConn() ,每个语句都要执行多次才能跳到下一个语句, 调试的时候 vs提示 该进程或线程自上一个步骤以来已更改,程序按F5报错 是不是这里的原因?这种情况如何避免 ?
...全文
295 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐的小二兔 2013-10-22
  • 打赏
  • 举报
回复
其实归根结底是因为你没有关闭之前打开的 command连接。用曹版主的using写法就解决所有问题
Falleyes 2013-10-22
  • 打赏
  • 举报
回复
引用 3 楼 caozhy 的回复:
最好用using using相当于try catch+dispose
+1
atmo 2013-10-21
  • 打赏
  • 举报
回复
using (OleDbConnection conn = new OleDbConnection(GetConnStr()))
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand())
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = strSql;
                    cmd.Connection = conn;
                    cmd.ExecuteNonQuery();
                }
            }
我试了下 类似这样的语句确实没有问题...
threenewbee 2013-10-21
  • 打赏
  • 举报
回复
最好用using using相当于try catch+dispose
atmo 2013-10-21
  • 打赏
  • 举报
回复
楼上大神求解释,难道我创建SqlCommand的时候也需要放到using里面去吗? 如果我按住f5程序也会销毁 为什么按f5会重复执行 ?
全栈极简 2013-10-21
  • 打赏
  • 举报
回复
using(SqlConnection conn = new SqlConnection()) { ... }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧