Как подключиться к двум базам данных в одной строке соединения в С#?
Обычно, когда мне нужно подключиться к базе данных с помощью С#, я бы использовал следующие командные процедуры ниже:
- определить соединение mysql.
- открыть соединение mysql.
- определить оператор sql/query.
- используйте 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)"
Или есть ли другой способ для такого рода проблем?...
Ответы
Ответ 1
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 statement:
select a.ref_no from db1.tbl a where a.ref_no not in (select b.ref_no from db2.tbl b)
Вы можете запрашивать сразу несколько баз данных.
Обновление
Я думаю, что единственным вариантом является одновременное создание двух соединений и передача данных между двумя серверами через С#.