Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to connect to two databases in one connection string in C#?

Tags:

c#

database

mysql

Normally, when I need to connect to a database using C#, I would use the following command routines below:
- define a mysql connection.
- open a mysql connection.
- define a sql statement / query.
- use MySqlCommand to execute the query.

Sample codes:

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();

My problem above is on the part where I use the MySqlCommand command because it is where a database connection is indicated so that it will now which database to query to like

MySqlCommand com = new MySqlCommand(sql, con);  

where sql is a sql statement and con is a connection to be used for the query.

How do I query two databases in one sql statement?
Consider the following: (I'm using 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)"  

Or is there another way for this kind of problem?...

like image 360
chad Avatar asked May 02 '13 07:05

chad


People also ask

Is it possible to connect to multiple databases?

Enabling Multiple Database ConnectionsPerformance can degrade if you allow too many database connections for the number of processors that are available. Performance might also degrade if you increase the number of database connections to process small amounts of data.

Can we connect two database in single application?

Not only does it support most of the major Database Management Systems (DBMSes), but it is one of the few tools that can simultaneously connect to all of them at once!

Can we use two database in one project?

Generally, if one project consumes multiple databases, it is because it must consume different, often legacy sources of information that originated outside of this particular project. This is most common in Enterprise environments.


1 Answers

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)

You can query multiple database at a time.


Update

I think the only option is create 2 connections at the same time and pass the data between the 2 server through C#.

like image 159
mjb Avatar answered Sep 17 '22 20:09

mjb