今天看的别人的DbHelperSql, 自己用的时候出现了问题,主要是关于Dispose方法的
这是错误信息:错误 14 “System.Data.SqlClient.SqlCommand.Dispose(bool)”不可访问,因为它受保护级别下面是出错代码:
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
try
{
da.Fill(ds, "ds");
cmd.Parameters.Clear();
}
catch (SqlException ex)
{
throw new Exception(ex.Message);
}
finally
{
cmd.Dispose();
conn.Close();
}
我看了自己程序中Dispose方法的定义:是sqlcommand中的 protected override void Dispose(bool disposing);
另外一个程序中的定义为:component中的好像是自己写的一个监听System.ComponentModel.Component.Disposed
请问各位前辈:
①这两个都是我自己机子上的包,为什么两个的定义会不一样,是程序中的设置么?我没有在程序中找到
②我上面提到的那个错误怎么解决呢? Dispose方法 Dbhelpersql --------------------编程问答-------------------- SqlCommand类继承自System.ComponentModel.Component,
而Dispose方法是在Component类中定义的,形式为public void Dispose();
它的重载形式为protected void Dispose(bool disposing);
一个可以外部调用,一个不行。其实Dispose()方法内部调用Dispose(true);
代码上看,cmd.Dispose();应该没有问题 --------------------编程问答-------------------- 不需要执行DbCommand的什么Dispose。如果你不知道为什么要调用,就不要画蛇添足地调用。删掉它。 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 一些公用性质的类的对象都会给提供Close或者Dispose方法,不需要自己再去写,如果没有的话,你就不用管了,一般来说你要是不知道该不该Close或者Dispose的话,就用Using。 --------------------编程问答-------------------- using 会自动释放资源的,你还调用一次 Dispose 肯定报错了。 --------------------编程问答-------------------- 从一个工程中转移到另外一个工程中是可能会出现这个问题的,删掉就好了。
补充:.NET技术 , C#