public int AddPublish(Model.AddPublish p)
{
using (SqlConnection conn = new SqlConnection(connectionstring))
{
conn.Open();
string sql = string.Format("insert BookPublish values ('{0}','{1}')", p.BookPublishId, p.BookPublishName);
SqlCommand cmd = new SqlCommand(sql, conn);
return cmd.ExecuteNonQuery();
cmd.Dispose();
}
}
c#看一下为什么说cmd.Dispose()无法访问
关注:155 答案:5 手机版
解决时间 2021-01-09 03:04
- 提问者网友:巴黎左岸
- 2021-01-08 04:21
最佳答案
- 二级知识专家网友:三虚那逝的流年
- 2021-01-08 05:20
释放资源对象是Conn吧,你写的:conn.Open()呢!当然所释放的对象就是打开数据库对象了,不关Cmd的事,把 cmd.Dispose()改成conn.Dispose()就可以啦
--以上错误,逻辑上的错误
using()//在完成之后.会自动关闭连接的,
本来想手动cmd.dispose是没有错的,虽然有垃圾收集器.但是因为你return了函数就返回调用点了,导致没有方法访问cmd.dispose
--以上错误,逻辑上的错误
using()//在完成之后.会自动关闭连接的,
本来想手动cmd.dispose是没有错的,虽然有垃圾收集器.但是因为你return了函数就返回调用点了,导致没有方法访问cmd.dispose
全部回答
- 1楼网友:守給你的承諾
- 2021-01-08 09:41
不需要手动释放这个cmd
- 2楼网友:哭嗻説侢見
- 2021-01-08 08:06
return cmd.ExecuteNonQuery();
cmd.Dispose();
因为你return了,都返回了,程序的执行权交给了调用它的程序了.当然无法访问了
- 3楼网友:那年仲夏
- 2021-01-08 06:55
释放资源对象是Conn吧,你写的:conn.Open()呢!当然所释放的对象就是打开数据库对象了,不关Cmd的事,把 cmd.Dispose()改成conn.Dispose()就可以啦
呵呵。楼下正解,受教咯
- 4楼网友:魔法小仙子
- 2021-01-08 06:40
你好!
1.不需要调用Disponse();
2.因为你在调用它之前就已经return了,所以这段代码会标记为不会执行的代码。这都搞不懂你还混啥哦
如果对你有帮助,望采纳。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!