查询数据库时如何停止重复相同的代码

How can I stop repeating the same code when querying a database

我正在用 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 字符串可以是任何东西。问题是每个查询都需要从用户界面 class 传递给它的不同参数,并且 db.addParameter 调用的次数对于一个 table 或另一个查询来说是不同的。

我知道这很基础,但我就是做不到。我真的希望这些方法(每次我向应用程序添加功能时它们都会成倍增加)减少到一个可重用的方法。请帮助

考虑使用像 NHibernate 或 Entity Framework 这样的 ORM。它为你做那些事情。还要考虑使用诸如 autofac 之类的东西将其与控制反转框架相结合,你会过得更好。

您可以使用字典作为参数;

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 }};