如何在C#中的一个连接字符串中连接到两个数据库
本文关键字:连接 字符串 两个 数据库 一个 | 更新日期: 2023-09-27 18:11:59
通常,当我需要使用C#连接到数据库时,我会使用以下命令例程:
-定义一个mysql连接
-打开一个mysql连接
-定义sql语句/查询
-使用MySqlCommand执行查询。
示例代码:
string con1 = "server=<db1 IP>;User Id=user;password=password;Persist Security Info=True;database=db1";
string con2 = "server=<db2 IP>;User Id=user;password=password;Persist Security Info=True;database=db2";
MySqlConnection cn1 = new MySqlConnection(con1);
MySqlConnection cn2 = new MySqlConnection(con2);
MySqlCommand com
cn1.Open();
string sql = "some query";
com = new MySqlCommand(sql, cn1);
com.executeNonQuery();
cn1.Close();
我上面的问题是我使用MySqlCommand命令的部分,因为它是指示数据库连接的地方,所以它现在将像一样查询哪个数据库
MySqlCommand com = new MySqlCommand(sql, con);
其中sql是一条sql语句,con是用于查询的连接。
如何在一条sql语句中查询两个数据库
考虑以下内容:(我使用的是MySQL(
- I have two databases, db1 and db2.
- db1 is located in City A
- db1 is located in City B
- Both databases have one table (tbl) and they both have the same structure.
- Table structure for tbl:
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id | int(9) | NO | PRI | | |
| ref_no | int(9) | NO | | | |
| name | varchar(10) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
- I want to run a query on db1.tbl against db2.tbl
- Example query: "select ref_no from db1.tbl where ref_no not in (select ref_no from db2.tbl)"
或者有其他方法解决这种问题吗?。。。
string con = "server=localhost;user=root;pwd=1234;";
using (MySqlConnection cn1 = new MySqlConnection(con))
{
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = cn1;
cn1.Open();
cmd.CommandText = sql;
MySqlDataAdapter da = new MySqlDataAdapter();
....
}
sql语句:
select a.ref_no from db1.tbl a where a.ref_no not in (select b.ref_no from db2.tbl b)
一次可以查询多个数据库。
更新
我认为唯一的选择是同时创建两个连接,并通过C#在两个服务器之间传递数据。
您正在寻找的是联合存储引擎
在其中一台服务器(甚至两台服务器(上,您可以创建一个占位符表,该表由MySQL服务器透明地路由到另一台MySQL服务器。
它允许您只在一台服务器上运行查询,您的服务器将联系另一台服务器以获取所需的数据。