C#数据库操作第一次可行第二次错误

查明是否是连接未关

sqlCnt.Open();
SqlCommand sql = new SqlCommand(sqlstring, sqlCnt);
int num = sql.ExecuteNonQuery();
qlCnt.Close();

我一开始这个是关闭的,第二个窗口的查询中也打开了连接,结果那个忘记写关闭了

sqlCnt.Open();
SqlCommand comm = new SqlCommand(sqlstring, sqlCnt);
adapter.SelectCommand = comm;
adapter.Fill(ds, "main_table");

再次操作时提示连接为打开状态,所以sqlCnt.Open();执行错误

-----------------------------------分----割----线----------------------------------------------------

注意你的try,catch

于是第二天我又出现了一样的错误,但是这次并没有执行其他模块,我也全都写了close
之后我看到了这个

try
 {
      sqlCnt.Open();//打开连接
      SqlCommand sql = new SqlCommand(sqlstring, sqlCnt);//建立sql命令语句
      int num = sql.ExecuteNonQuery();//执行,返回影响的行数
      sqlCnt.Close();
      if (num > 0)
         return true;
      else
         return false;
}
catch
{
      return false;
}

发现了问题,我第一次输入错误的时候就会从

int num = sql.ExecuteNonQuery();

跳转到catch中,于是就会没有执行关闭,第二次再次执行的时候就会错误(同连接已打开)
所以应该再catch中也加上关闭连接。

P.S. 随后我尝试在每个sqlCnt.Open()前加上sqlCnt.Close(),实际上是可以运行的,也就是说已关可以再关,已开不能再开,所以在每个sqlCnt.Open()前加上sqlCnt.Close()是不是就可以简略很多错误?如果有什么坏处还希望大佬们告知。

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值