大众信息网

c#看一下为什么说cmd.Dispose()无法访问

关注:155  答案:5  手机版
解决时间 2021-01-09 03:04
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();
}
}
最佳答案
释放资源对象是Conn吧,你写的:conn.Open()呢!当然所释放的对象就是打开数据库对象了,不关Cmd的事,把 cmd.Dispose()改成conn.Dispose()就可以啦
--以上错误,逻辑上的错误
using()//在完成之后.会自动关闭连接的,
本来想手动cmd.dispose是没有错的,虽然有垃圾收集器.但是因为你return了函数就返回调用点了,导致没有方法访问cmd.dispose
全部回答
不需要手动释放这个cmd
return cmd.ExecuteNonQuery(); cmd.Dispose(); 因为你return了,都返回了,程序的执行权交给了调用它的程序了.当然无法访问了
释放资源对象是Conn吧,你写的:conn.Open()呢!当然所释放的对象就是打开数据库对象了,不关Cmd的事,把 cmd.Dispose()改成conn.Dispose()就可以啦 呵呵。楼下正解,受教咯
你好! 1.不需要调用Disponse(); 2.因为你在调用它之前就已经return了,所以这段代码会标记为不会执行的代码。这都搞不懂你还混啥哦 如果对你有帮助,望采纳。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!