C# 在C语言中处理多个数据库连接的最佳方法是什么#

C# 在C语言中处理多个数据库连接的最佳方法是什么#,c#,sql,database,connection,C#,Sql,Database,Connection,如果说我需要对两个单独的数据库运行两个单独的SQL语句。现在我需要(伪代码): 上面这句话似乎很笨拙。如果我有三个不同的sql语句,我需要三个不同的SQLCmd变量 是否有一种“标准”的方式来做这些事情,特别是在效率、性能方面?如果有人能提供一个简单的改进伪代码,那就太好了 此外,我是否需要担心实现连接池,以节省资源和加快程序?如果是,在这种情况下,我该如何实施它 谢谢 如果您需要同时打开所有两个(或三个,或…)连接,并且需要为每个连接保留SqlCommand,那么是的,您可能必须按照您现在的方

如果说我需要对两个单独的数据库运行两个单独的SQL语句。现在我需要(伪代码):

上面这句话似乎很笨拙。如果我有三个不同的sql语句,我需要三个不同的SQLCmd变量

是否有一种“标准”的方式来做这些事情,特别是在效率、性能方面?如果有人能提供一个简单的改进伪代码,那就太好了

此外,我是否需要担心实现连接池,以节省资源和加快程序?如果是,在这种情况下,我该如何实施它

谢谢

如果您需要同时打开所有两个(或三个,或…)连接,并且需要为每个连接保留SqlCommand,那么是的,您可能必须按照您现在的方式进行操作


但是,如果一次只需要打开一个连接,则可以使用单个连接和单个命令,然后根据需要进行更改。

如果要进行低级数据库访问,我觉得这很好。当然,如果您在任何时候只需要打开一个数据库连接,您可以将大部分代码抽象到一个方法中(该方法将SQL命令/文本作为参数并返回结果),但在您的情况下可能不是这样

您还可以通过使用语句使事情稍微整洁一些,例如:

using(var sqlConnectionA = new ...)
using(var sqlConnectionB = new ...)
{
    try
    {
        // Perform queries here.
    }
    catch (SqlException exSql)
    {
        // SQL error
    }
}

与其添加变量,为什么不创建一个类呢

public class MyDatabaseConnection {
    public MyDatabaseConnection(string connectionString) {
        this.connectionString = connectionString;
        // create a database connection perhaps
    }
    // some methods for querying a database
    public void execute(string query) { }
}
在这种情况下,很容易添加第三个数据库连接

MyDatabaseConnection con1 = new MyDatabaseConnection("Server=localhost");
MyDatabaseConnection con2 = new MyDatabaseConnection("Server=other_server");
MyDatabaseConnection con3 = new MyDatabaseConnection("Server=third_one");
并对每个数据库执行sql查询

MyDatabaseConnection[] cons = new MyDatabaseConnection[]{ con1, con2, con3 };
foreach (MyDatabaseConnection con in cons) {
    con.execute(someSqlCommandText);
}

为什么必须运行此方法中的所有命令?为什么不能为每个sql命令/数据库连接创建一个方法?我会使用块来处理关闭/处置问题,但除此之外,这个想法是正确的。我会问你为什么需要同时引用所有的方法——为什么不三个单独的调用,分成不同的方法,然后依次调用呢?是的,我不需要同时打开连接。所以我可以创建一个通用方法,它接受一个连接变量和一个SQL命令变量,可能还有一个SQL字符串,然后在方法内部执行查询?这样,一切都变得更整洁了?这是一种常见的方法吗?嗯,好的。我不需要同时打开两个连接。因此,我将保留一个连接变量和一个sqlCMD变量,并按顺序将它们重新分配给不同的数据库。所以,如果我需要对数据库1运行SQL语句1,然后对数据库2运行SQL语句2,然后再次对数据库1运行SQL语句1。我需要重新分配连接和cmdSQL变量三次?没错。每次都需要更改SqlCommand.Connection属性和SqlCommand.CommandText属性。例如,您可以将它们中的每一个放在一个数组中,然后使用for循环以编程方式更改内容(而不是将代码更改重复三次)。
MyDatabaseConnection[] cons = new MyDatabaseConnection[]{ con1, con2, con3 };
foreach (MyDatabaseConnection con in cons) {
    con.execute(someSqlCommandText);
}