當前位置:編程學習大全網 - 源碼下載 - C#(或者別的語言)如何連接兩個遠程數據庫?

C#(或者別的語言)如何連接兩個遠程數據庫?

介紹四個辦法:

效率低,但是操作簡單用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裏直接使用,建立好查詢,可以直接調用。

  • 上一篇:js函數如何執行sql語句sql如何執行函數
  • 下一篇:完整版的cs1.5
  • copyright 2024編程學習大全網