Normalnie, gdy potrzebuję połączyć się z bazą danych przy użyciu C#, użyłbym następujących procedur poleceń poniżej:
- zdefiniuj połączenie mysql.
- otwórz połączenie mysql.
- zdefiniuj instrukcję SQL/zapytanie.
- użyj MySqlCommand do wykonania zapytania.Jak połączyć się z dwiema bazami danych w jednym ciągu połączenia w języku C#?
kody Próbka:
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();
powyżej Mój problem polega na części, w której używam komendy MySqlCommand bo to jest, gdy połączenie z bazą danych jest oznaczona tak, że będzie teraz których baza danych kwerendy lubić
MySqlCommand com = new MySqlCommand(sql, con);
gdzie sql to instrukcja sql, a con to połączenie, które ma być użyte w zapytaniu.
Jak wysłać zapytanie do dwóch baz danych w jednym słowie sql?
Rozważmy następujący: (używam 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)"
Czy jest jakiś inny sposób na tego rodzaju problemu ...
Jest to coś, co należy skonfigurować na poziomie serwera bazy danych, a nie w C#, jak sądzę. Połączone serwery to jeden sposób na zrobienie tego. Możesz również uzyskać wyniki z obu serwerów (za pośrednictwem dwóch ciągów połączenia), a następnie manipulować danymi zgodnie z wymaganiami programu. Jestem pewien, że są też inne opcje, to tylko dwa, które natychmiast przyszły mi na myśl. – Tim
Użyj dwóch połączeń i połącz za pomocą Linq. Zobacz http://stackoverflow.com/questions/4278993/is-it-possible-to-perform-joins-ross-different-databases-using-linq – Morten