首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

利用 C# 遠端存取 Access 資料庫(二):伺服器與客戶端實作

     編輯:關於C語言

伺服器程式 TestServer

服務器程式 TestServer 除了具備遠端存取物件能力外,主要工作是取得實際 Access 資料庫檔案路徑,並設定遠端物件的資料庫連接字串。必須加入遠端物件、遠端處理與網路通訊協定等類別庫參考。服務啟動初始化時,需建立遠端物件實例並註冊通訊埠,然後呼叫 RemotingConfiguration.RegisterWellKnownServiceType 方法。MSDN 描述:使用給定參數初始化 WellKnownServiceTypeEntry 新實例,將伺服器端物件 Type 註冊為已知型別,所有知道已註冊已知物件 URI 的客戶端都可取得該物件的 Proxy。URI 即統一資源識別碼。代碼如下:

remotableObject = new RemoteObject.CRemoteAccess();
TcpChannel channel = new TcpChannel(8080);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject.CRemoteAccess), "RithiaTestAccessServer", WellKnownObjectMode.Singleton);

選擇要存取的 Access 資料庫檔案後,需呼叫遠端物件的 SetRemoteAccessConnString 方法,該方法保存本次連接期間的連接字串:

ProviderStr = ProviderStrPart + txtAccessMdbFileName.Text + ";Jet OLEDB:Database Password=" + txtAccessPassWord.Text;
remotableObject.SetRemoteAccessConnString(ProviderStr);

客戶端程式 TestClient

在方案中新增 Windows Forms 專案「TestClient」,拖曳元件佈局介面:

客戶端需知伺服器電腦名稱或 IP 及監聽埠號,建立遠端物件實例與 DataTable 接收資料:

string RemoteURL;
Host = txtHost.Text;
Port = txtPort.Text;
RemoteURL = "tcp://" + Host + ":" + Port + "/RithiaTestAccessServer";
try
{
    TcpChannel chan = new TcpChannel();
    ChannelServices.RegisterChannel(chan);
    remoteObject = (RemoteObject.CRemoteAccess)Activator.GetObject(typeof(RemoteObject.CRemoteAccess), RemoteURL);
    RemoteDataTable = new DataTable();
    button3.Enabled = false;
}
catch (Exception E)
{
    MessageBox.Show(E.Message.ToString());
}
finally { }

客戶端根據伺服器監聽通道 (TCP/HTTP) 註冊相應通道與埠號,組合遠端物件 URL:Url = 通道://主機名:埠號/物件Uri,建立實例後如同本地物件般存取。呼叫 GetUserTable 取得查詢結果集:

RemoteDataTable = remoteObject.GetUserTable(txtSQL.Text, "Test");
dataGridView1.DataSource = RemoteDataTable;

儲存結果集只需呼叫 SaveData:

remoteObject.SaveData(RemoteDataTable);

執行結果

程式在 Visual Studio .NET 2005 與 Windows XP SP2 環境下除錯執行通過。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved