当前位置:编程学习 > C#/ASP.NET >>

今天看的别人的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。如果你不知道为什么要调用,就不要画蛇添足地调用。删掉它。 --------------------编程问答--------------------
引用 2 楼 sp1234 的回复:
不需要执行DbCommand的什么Dispose。如果你不知道为什么要调用,就不要画蛇添足地调用。删掉它。

+1 --------------------编程问答-------------------- 一些公用性质的类的对象都会给提供Close或者Dispose方法,不需要自己再去写,如果没有的话,你就不用管了,一般来说你要是不知道该不该Close或者Dispose的话,就用Using。 --------------------编程问答-------------------- using 会自动释放资源的,你还调用一次 Dispose 肯定报错了。 --------------------编程问答-------------------- 从一个工程中转移到另外一个工程中是可能会出现这个问题的,删掉就好了。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,