C#(或者别的语言)如何连接两个远程数据库?

有两个远程数据库,mySQL和SQLsever,C#如何同时连接这两个数据库呢?哪位大侠能把源码发上来呢?最好启动的时候弹出一个窗口让输入两个数据库的用户密码然后最好能有... 有两个远程数据库,mySQL和SQLsever,C#如何同时连接这两个数据库呢?

哪位大侠能把源码发上来呢?
最好启动的时候弹出一个窗口让输入两个数据库的用户密码
然后最好能有简单的select insert updata delete例子语句
最好能有详细的注释,我想认真的学习一下,
万分谢谢!!!
不用C#用别的语言也可以!
我是想从mySQL读取一条数据,写入到SQLserver;
select,insert,updata,delete,最好分别来一个例子,谢谢!!
展开
 我来答
创作者zUzVB1Sl31
2013-09-24 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

介绍四个办法:

  1. 效率低,但是操作简单用OpenRowSet方法直接在SQL上建立查询

  2. 效率低,但是方便,用ACCESS的ODBC库

  3. 效率高,编程要使用逻辑性强一点,遍历两个数据库的数据表,使用临时表作为连接池

  4. 效率高,操作简单,利用ACCESS连接表

OpenRowset用法(例连接两表查询):

Select * from 表A Inner Join 表B OpenRowSet [Driver={SQL Server};Server=IP;UID=...;PWD=...;DataBase=...] On 条件;

ODBC方法,把C#连接ACCESS空数据库,利用ACCESS的ODBC驱动去连接外部SQL远程表

 Select * from 表A Inner JOIN 表B IN ODBC[ODBC:Driver={SQL Server};Server=...;uid=...;pwd=...;DataBase=...] as 查询2 On 表A.字段=查询2.字段;

 遍历数据集合是最常用的办法,建立一个临时表在本地数据库也好在异地数据库也好,先去查询Server表,查询出来循环遍历他,遍历过程中把遍历的变量去作为另一个查询的参数,最后把另一个查询出来的数据逐条插入到临时表中,每一次操作都先删除临时表再重新插入初始化他,这样就达到了用连接池来分析大量数据的目的,例(用Server1上的表A去匹配查询Server2上的表B,再插入Server3上的表C)

using System.Data;
using System.SqlClient;
...
//插入数据的过程
void charu(string ID) //用ID去查询Server2的表B,插入到Server3的表C
{
SqlConnection cnn=new SqlConnection();
cnn.ConnectionString="连接Server2的字符串";
try
{
   cnn.Open();
   DataSet ds=new DataSet;
   SqlDataAdapter sda=new SqlDataAdapter("Select * from 表B where ID='"+ID+"'",cnn);
   sda.Fill(ds);   //查出单条数据
   SqlConnection cnn1=new SqlConnection();
   cnn1.ConnectionString="连接Server3的字符串";
   cnn1.Open();
   //...插入查询出来的数据到Server3的表C
   DataSet ds1=new DataSet;
   SqlDataAdapter sda1=new SqlDataAdapter("Insert Into 表C(字段)values('"+ds.Tables[0].Rows[0]["插入的字段"].ToString()+"')",cnn1);
   sda1.Fill(ds1);


catch
{
   //..错误信息
}
finnaly
{
   cnn.Close();
}
}
}
void lianjiechaxun()
{
SqlConnection cnn=new SqlConnection();
cnn.ConnectionString="连接Server1的字符串";
try
{
   cnn.Open();
   DataSet ds=new DataSet;
   SqlDataAdapter sda=new SqlDataAdapter("Select * from 表A",cnn);
   sda.Fill(ds);
   for(int i=0;i<ds.Tables[0].Rows.Count;i++)
   {
     charu(ds.Tabels[0].Rows[i]["ID"].ToString());
     //把表A的ID作为参数
   }  

catch
{
   //..错误信息
}
finnaly
{
   cnn.Close();
}
}

用ACCESS连接表是最简单的,但是比上面的速度要慢一点,最重要的数据不安全,ACCESS密码是可以破解的。上面的如果用三层结构写,反编译也破解不了。在网上看一下ACCESS怎么建立SQL Server远程连接表,这些表将当作ACCESS表可以在ACCESS里直接使用,建立好查询,可以直接调用。

更多追问追答
追问
大侠我是想从mySQL读取一条数据,写入到SQLserver的啊。
追答
读取N条都可以,一条你就用条件筛选一下就好了,先查出你的那条数据,直接插入到远程SQL Server不就行了,如果数据有N条也没问题,用上面我教的办法,不需要表对表直接操作,真操作不是没办法,但是卡得很。
还有一个办法是每一个程序远必学的,WebService开发数据接口服务,用Java、C#开发Web服务,给Web服务传递参数操作远程服务器
syht2000
高粉答主

2013-09-24 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
同时连接是什么意思,如果你只是要同时操作这两个数据库,那跟普通的代码是完全一样的,没什么两样(这种代码就不贴了,网上倒处都有),如果你是想在两个数据库之间进行sql操作,并且这两个远程库能互通的话,可以在sql server上建立一个链接数据库链接到mysql上,这样就可以象操作sql server一样来操作那个mysql了。
追问
其实就是想从其中一个读取数据,写入另一个这样
大侠能简单做个程序源码出来让我学习一下吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一郎大神
2013-09-24 · TA获得超过1180个赞
知道小有建树答主
回答量:1033
采纳率:92%
帮助的人:314万
展开全部
//用SqlClient控制SQL SERVER,用OLEDB控制mySQL,下面给出用SqlClient 操作SQL SERVER方法,OLEDB类似。
using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = GetConnectionString();
string queryString =
"SELECT CategoryID, CategoryName FROM dbo.Categories;";
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command = connection.CreateCommand();
command.CommandText = queryString;
try
{
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine("\t{0}\t{1}",
reader[0], reader[1]);
}
reader.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
static private string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file.
return "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
}
}
更多追问追答
追问
大侠你能在VS里面用C#完整的写一下吗?然后能把源文件发给我吗?

万分感谢啊!
追答
这个已经很完整了啊,操作数据库的命令对象是SqlCommand,将你要的sql语句传给它的实例就行了,这里用的reader.Read()是只读的。如果你要进行修改操作得用SqlDataAdapter对象来执行。

至于OLEDB的和上面的几乎完全一样,只不过对象名称不同而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尘雨洛烟
2013-09-24 · TA获得超过6203个赞
知道大有可为答主
回答量:3967
采纳率:79%
帮助的人:1006万
展开全部
其实就是两个不同的连接字符串,但连接mySQL和SQLsever字符串的格式不同,连接SQLsever用sqlclient,连接mySQL用oledb,然后利用这两个字符串分别对数据库进行操作。
追问
大侠说得对,但是原理我也是明白,就是不懂怎么下手

大侠你能在VS里面用C#完整的写一下吗?然后能把源文件发给我吗?

万分感谢啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
荣丰李老师
2013-09-24 · TA获得超过185个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:82.7万
展开全部
两个dbhelper就好了.
追问
大侠你能在VS里面用C#完整的写一下吗?然后能把源文件发给我吗?

万分感谢啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
正义的能量有很多
2013-09-24 · 贡献了超过112个回答
知道答主
回答量:112
采纳率:0%
帮助的人:28万
展开全部
写两个数据库连接就是 但是要保证代码放置的空间可以访问到数据库所在空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式