在ADO.NET中减少编写代码(包装类)-C#(SQL)

问题描述 投票:0回答:1

因此,我一般来说对C#来说还很陌生,但是目前我对这种语言有基本的了解。

访问SQL数据库时,我已经决定使用ADO.NET(SqlClient似乎是最好的方法,而且我设法使它工作,包括使用查询。我的问题是,当我开始更频繁地查询数据库时,我似乎只是一遍又一遍地重写非常相似的代码(这显然是不好的做法)。显然,我需要制作某种类来处理ADO.NET(SqlClient)的使用,以便我不能只键入以下内容:

DatabaseConnection.Query("SELECT * FROM tblProducts");

…代替...

using (SqlConnection cnn = new SqlConnection(cnnString)) // cnnString was defined earlier in the code
{
        SqlCommand cmd = new SqlCommand("SELECT ProductType FROM tblProductTypes", cnn);
        DataTable dt = new DataTable();
        cnn.Open();
        dt.Load(cmd.ExecuteReader());
        cboFilterTypes.DataSource = dt;
        cboFilterTypes.DisplayMember = "ProductType";
        cboFilterTypes.ValueMember = "ProductType";
        cnn.Close();
 }

因此,我认为我需要做一个类包装器(至少我认为这是所谓的包装器),但是我不太确定该怎么做。有人对我有任何建议或技巧吗?

要清楚,我不想使用实体框架或类似的基于ADO.NET的东西-我试图使用实体框架,并确定有太多缺点。

c# sql ado.net wrapper sqlclient
1个回答
0
投票

根据您对“包装器”的要求,您可以简单地创建一个静态辅助方法来处理对数据库的调用,例如

    public static DataTable GetDataTable(string query)
    {
        DataTable result = new DataTable();
    using (SqlConnection cnn = new SqlConnection(cnnString)) // cnnString was defined earlier in the code
    {
            SqlCommand cmd = new SqlCommand("SELECT ProductType FROM tblProductTypes", cnn);
            DataTable dt = new DataTable();
            cnn.Open();
            dt.Load(cmd.ExecuteReader());
            cnn.Close();
     }
return result;
    }

然后您可以这样称呼

© www.soinside.com 2019 - 2024. All rights reserved.