因此,我一般来说对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的东西-我试图使用实体框架,并确定有太多缺点。
根据您对“包装器”的要求,您可以简单地创建一个静态辅助方法来处理对数据库的调用,例如
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;
}
然后您可以这样称呼