CS模式,C#如何远程连接sql2008数据库?

CS模式,C#如何远程连接sql2008数据库?,第1张

一般C/S模式连接远程数据是不会去直连的,而是通过一个中间系统去连接数据库。比如说你举的例子,客户端在上海,数据库在北京,那么需要在北京架一台WebService服务器(或在上海或其他城市也行,最好是在北京,与数据库在同一个内网里,但只有WebService服务器对外,而数据库服务器不对外),然后在WebService中实现增删查改功能,再利用Client端去直接访问这些WebService功能即可。

介绍四个办法:

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

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

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

效率高, *** 作简单,利用ACCESS连接表

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

Select * from 表A Inner Join 表B OpenRowSet [Driver={SQL Server}Server=IPUID=...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=0i<ds.Tables[0].Rows.Counti++)

   {

     charu(ds.Tabels[0].Rows[i]["ID"].ToString())

     //把表A的ID作为参数

   }  

catch

{

   //..错误信息

}

finnaly

{

   cnn.Close()

}

}

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6771454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存