Normalde, C# kullanarak bir veritabanına bağlanmam gerektiğinde, aşağıdaki komut rutinlerini kullanacağım:
- bir mysql bağlantısı tanımlayın.
- bir mysql bağlantısı açın.
- bir sql deyimi/sorgu tanımlayın.
- Sorguyu yürütmek için MySqlCommand kullanın.C# 'da bir bağlantı dizesinde iki veritabanına nasıl bağlanır?
Numune kodları:
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();
Sorunum yukarıda şimdi hangi veritabanı sevmeye sorgulamak için böylece bir veritabanı bağlantısı gösterilir çünkü gerçek bu MySqlCommand komutunu kullanın kısmında ise
Sql bir sql ifadesidir ve con sorgu için kullanılacak bir bağlantıdır.MySqlCommand com = new MySqlCommand(sql, con);
İki veritabanını bir sql deyiminde nasıl sorgularım?
aşağıdaki düşünün:? (MySQL 'i kullanıyorum)
- 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)"
Veya sorun bu tür başka bir yolu var ...
Bu, veritabanı sunucusu düzeyinde C# içinde değil, kurulması gereken bir şey olduğuna inanıyorum. Bağlantılı Sunucular bunu yapmanın bir yoludur. Alternatif olarak, sonuçları iki sunucudan da (iki bağlantı dizesi üzerinden) alabilir ve ardından verilerinizi programınızda istediğiniz gibi değiştirebilirsiniz. Eminim başka seçenekler de vardır, bunlar hemen akla gelen sadece iki tanesidir. – Tim
İki bağlantıyı kullanın ve Linq'i kullanarak katılın. Bkz. Http://stackoverflow.com/questions/4278993/is-it-possible-to-perform-joins-across-different-databases-using-linq – Morten