C#(或者别的语言)如何连接两个远程数据库?
哪位大侠能把源码发上来呢?
最好启动的时候弹出一个窗口让输入两个数据库的用户密码
然后最好能有简单的select insert updata delete例子语句
最好能有详细的注释,我想认真的学习一下,
万分谢谢!!!
不用C#用别的语言也可以!
我是想从mySQL读取一条数据,写入到SQLserver;
select,insert,updata,delete,最好分别来一个例子,谢谢!! 展开
介绍四个办法:
效率低,但是操作简单用OpenRowSet方法直接在SQL上建立查询
效率低,但是方便,用ACCESS的ODBC库
效率高,编程要使用逻辑性强一点,遍历两个数据库的数据表,使用临时表作为连接池
效率高,操作简单,利用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服务传递参数操作远程服务器
其实就是想从其中一个读取数据,写入另一个这样
大侠能简单做个程序源码出来让我学习一下吗
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的和上面的几乎完全一样,只不过对象名称不同而已
大侠说得对,但是原理我也是明白,就是不懂怎么下手
大侠你能在VS里面用C#完整的写一下吗?然后能把源文件发给我吗?
万分感谢啊!
大侠你能在VS里面用C#完整的写一下吗?然后能把源文件发给我吗?
万分感谢啊!