我正在用C#编写我的第一个大型应用程序,随着它的发展,我开始在查询数据库的每个方法中重复相同的代码,或多或少是这样的:
public static bool methodName(string ID, string Name, //etc)
{
bool success = false;
DBConnection db = new DBConnection(); //Oracle connection class
db.Connect(); //Connect to the database
if (db.GetConnectionState()) //checks the connection
{
db.SetSql("//insert, delete, update, etc, each method is different");
db.addParameter("id", ID);
if (db.ExecuteTransactions()) //attempts to insert, delete, update, whatever
success = true;
else
success = false;
}
else
success = false;
db.Dispose();
return success;
}
我只想要一个这样的方法,其中db.SetSql
字符串可以是任何东西。问题是每个查询都需要从用户界面类传递给它的不同参数,并且对于一个或另一个表的查询,db.addParameter
调用的数量会有所不同。
我知道这是非常基本的,但我无法得到它。我真的希望这些方法每次向应用程序添加一个功能时都会成倍增加,减少到一个可重用的方法。请帮忙
答案 0 :(得分:2)
您可以使用字典作为参数;
public static bool methodName(string query, Dictionary<string, string> parameters)
{
bool success = false;
DBConnection db = new DBConnection(); //Oracle connection class
db.Connect(); //Connect to the database
if (db.GetConnectionState()) //checks the connection
{
db.SetSql(query);
foreach(var param in parameters) db.addParameter(param.Key, param.Value);
if (db.ExecuteTransactions()) //attempts to insert, delete, update, whatever
success = true;
else
success = false;
}
else
success = false;
db.Dispose();
return success;
}
现在调用它如下:
methodName("Insert...", new Dictionary<string, string> {{"Id", ID }};
答案 1 :(得分:1)
考虑使用像NHibernate或Entity Framework这样的ORM。它为你做的事情。还要看一下使用像autofac这样的控制框架的反转耦合,你会好得多。