C# 在C中创建SqlDbConnection类#

C# 在C中创建SqlDbConnection类#,c#,sql-server,class,C#,Sql Server,Class,我正在尝试为我的应用程序创建SqlDbConnection类文件。我想使用这个连接类在需要时连接到数据库。到目前为止,我对类代码的理解是: using System.Data.Sql; using System.Data.SqlClient; using System.Data; namespace SqlTesting { public class SqlDbConnection { private SqlConnection con; public SqlCommand c

我正在尝试为我的应用程序创建SqlDbConnection类文件。我想使用这个连接类在需要时连接到数据库。到目前为止,我对类代码的理解是:

using System.Data.Sql;
using System.Data.SqlClient;
using System.Data;

namespace SqlTesting
{
public class SqlDbConnection
{
    private SqlConnection con;
    public SqlCommand cmd;
    private SqlDataAdapter sda;
    private DataTable dt;

    public SqlDbConnection()
    {
        con = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=DB_SQL;Integrated Security=SSPI;");
        con.Open();
    }

    public void SqlQuery(string querytext)
    {
        cmd = new SqlCommand(querytext, con);
    }

    public DataTable QueryEx()
    {
        sda = new SqlDataAdapter(cmd);
        dt = new DataTable();
        sda.Fill(dt);
        return dt;
    }

    public void NonQueryEx()
    {
        cmd.ExecuteNonQuery();
    }
}
}

我想我需要调用DbConnection.Dispose方法,这样它就会关闭并处理SqlConnection。现在我对如何在SqlDbConnection类文件上使用Dispose()方法感到有点困惑。因此,任何相关指南都将不胜感激

首先,您需要使用
SqlDbConnection:IDisposable

使用完以上各项后

       public void Dispose()
        {
            con.Close();                
            cmd.Dispose();
        }

对实现iDisposable的所有对象调用Dispose/Close总是很重要的。 当然,这意味着SqlDBConnection

可支配资源

常见的可支配资源包括:

 1.Database-related
    classes: SqlConnection, SqlDataReader, and SqlTransaction.
 2. File-based classes: FileStream and BinaryWriter. Stream-based
    classes: StreamReader, TextReader, TextWriter, BinaryReader, and
    TextWriter. 
 3. Network-based classes: Socket, UdpClient, and TcpClient.
Microsoft最佳实践是查看指南的好地方:

您为什么要这样做?在我看来,保持
SqlConnection
的时间比要求的时间长通常是个坏主意。还要注意的是,您的类没有实现
IDisposable
,如果您保持类的时间不变,它肯定应该实现。但是我建议不要这样做…con.Close()处理连接实际的问题是什么?在我看来,您试图创建某种实用程序类,但老实说,这并没有多少附加值。处理连接字符串,并根据查询结果创建数据表。但仅此而已,我同意Jon Skeet的观点-您不应该保持SqlConnection打开。考虑使用扩展的便利方法:公共DataTable QueryEx(SqLink)THX,建议删除其中一个。