亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

利用C#遠程存取Access數據庫

2024-07-10 13:22:24
字體:
來源:轉載
供稿:網友
 

  一、 技術要點

  我們都知道Windows應用程序在運行時會啟動一個進程,其總包括若干線程,不同的進程之間通信是開發分布式應用程序所必需的,傳統上,這不僅需要深入了解通信流兩端上進程的對象,而且還要深入了解低級別協議的宿主、應用程序編程接口以及配置工具等??傊?,它是一項需要大量專業知識和經驗的復雜任務。

  幸好.Net為我們提供了遠程處理功能,它所提供的通信方法可以快速而方便地完成上述建立通信的任務。因此,無論是需要快速開發 Web 應用程序,還是要花費更多時間生成關鍵的企業范圍的應用程序,.NET Framework 都會提供支持。通過 .NET 遠程處理,客戶端應用程序可以使用同一臺計算機或其網絡中其他任何可用的計算機上的其他進程中的對象。

  要使用 .NET 遠程處理創建可以讓兩個對象跨越應用程序直接通信的應用程序,只需生成以下對象即可:

  1、 可遠程處理的對象。

  2、 偵聽對該遠程對象的請求的應用程序即服務器程序。

  3、 對該遠程對象發出請求的客戶端應用程序。

  .Net下不同應用程序中的對象的通信方式有兩種:一種是跨應用程序域邊界傳輸對象副本,一種是使用代理交換消息。MarshalByRefObject 是通過使用代理交換消息來進行通信的對象的基類。當跨應用程序使用遠程對象時,對象的基類必須是從 MarshalByRefObject 繼承。

  二、 程序實現

 ?。?)我們先在VS的IDE中創建名為“TestRemoteAccess”的新的解決方案來容納前述用來實現遠程處理的三個項目,首先向解決方案中添加名為“RemoteObject”的類庫,然后將默認創建的類名更改為“CRemoteAccess”,并且繼承于“MarshalByRefObject”,代碼如下:

using System;
using System.Collections.Generic;
using System.Text; 
namespace RemoteObject
{
 public class CRemoteAccess : MarshalByRefObject
 {}
}

 

  我們需要在該對象內創建用于連接和存取本地Access數據庫的所有函數,供服務端客戶端程序同時調用。用于連接和存取Access數據庫的方法這里不再詳述,參看附件源碼。

  首先所有需要向客戶端公開的函數其可見性都必須設為 public。變量m_ConnString需要設置為public static,目的是當客戶端調用了SetRemoteAccessConnString后將數據庫連接字符串保存下來以備在本次連接期間始終能夠訪問,代碼如下:

……
public static string m_ConnString;
……
public void SetRemoteAccessConnString(string Connstr)
{
 m_ConnString = Connstr;
}
…… 

  成功連接了Access數據庫后我們需要返回數據集給請求的客戶端進行顯示和編輯,在遠程對象中我們聲明了幾個相關函數:

private void LoadData(string SqlStr, string TableName)
public void SaveData(DataTable ClientDataTable)
public DataTable GetUserTable(string SqlStr, string TableName) 

  客戶端可以傳遞SQL查詢腳本通過調用 GetUserTable來獲取相關數據庫表的數據,并返回一個DataTable,然后可以將該DataTable附值給DataGridView以便將數據顯示出來。GetUserTable通過調用私有的LoadData 函數來完成對數據的獲取。SaveData函數用于將編輯過的數據集保存回本地Access數據庫文件,代碼如下:

……
m_connection.Open();
m_adapter.Update(ClientDataTable);
……


(2)遠程對象創建完成,我們需要創建用于偵聽該遠程對象請求的服務端應用程序。在“TestRemoteAccess”解決方案中新建一個Windows窗體項目名為:“TestServer”,從工具箱中拖拽下幾個組件,界面如下所示:


服務器程序TestServer除了具備遠程訪問對象的能力外,它最主要的作用就是獲取實際的Access數據庫文件路徑,并且設置遠程對象的數據庫連接字符串。我們必須添加遠程對象以及遠程處理和網絡通訊協議等的類庫的引用。在服務器程序啟動初始,需要創建遠程對象的實例以及注冊通信端口,然后調用RemotingConfiguration.RegisterWellKnownServiceType 方法,MSDN中關于該方法的描述是這樣的:通過使用給定的參數初始化 WellKnownServiceTypeEntry 的新實例,將服務端上的對象 Type 注冊為已知類型,所有知道已注冊已知對象的 URI 的客戶都可以獲取該對象的代理。所謂URI即統一資源標識符 (Uniform Resource Identifier)。代碼如下:


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



  當選擇了要進行存取的Access數據庫文件后,我們需要調用遠程對象的SetRemoteAccessConnString方法,該方法將保存在本次與服務器程序連接期間連接該Access數據庫文件的連接字符串,代碼如下:


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



 ?。?)最后我們創建用于連接和請求服務的客戶端程序,它會通過調用服務器程序TestServer已經注冊的遠程對象來獲取相關數據集,并將編輯過的數據保存回實際的數據庫文件。在“TestRemoteAccess”解決方案中新建一個Windows窗體項目名為:“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下調試運行通過。
源碼下載:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
热re91久久精品国99热蜜臀| 在线视频中文亚洲| 精品国内产的精品视频在线观看| 亚洲美女激情视频| 一本久久综合亚洲鲁鲁| 久久久91精品国产一区不卡| 亚洲乱码国产乱码精品精天堂| 久久天堂av综合合色| 亚洲免费伊人电影在线观看av| 国产精品91久久久久久| 国产一区二区在线免费视频| 原创国产精品91| 精品视频中文字幕| 久久亚洲国产精品成人av秋霞| 在线播放国产精品| 国产亚洲a∨片在线观看| 久久久久久久久久久av| 国产精品久久久久久久久久| 欧美视频裸体精品| 国产精品久久久久影院日本| 久久久999精品| 亚洲精品中文字| 国产精品久久久久久久久借妻| 色综合色综合久久综合频道88| 国产精品极品美女粉嫩高清在线| 亚洲一区二区免费在线| 亚洲大尺度美女在线| 久久精品色欧美aⅴ一区二区| 中文欧美日本在线资源| 欧美亚洲另类激情另类| 欧美性开放视频| 欧美专区第一页| 久久久久久尹人网香蕉| 欧美日韩亚洲激情| 成人做爰www免费看视频网站| 91麻豆国产语对白在线观看| 亚洲精品一区二区三区婷婷月| 亚洲白拍色综合图区| 成人av.网址在线网站| 欧美日韩色婷婷| 精品久久久久久中文字幕| 久久精品视频免费播放| 欧美黑人又粗大| 人人爽久久涩噜噜噜网站| 青青精品视频播放| 色黄久久久久久| 欧美日韩国产成人高清视频| 成人网在线视频| 日韩国产在线看| 91国产美女在线观看| 福利微拍一区二区| 97在线免费视频| 日韩成人免费视频| 亲子乱一区二区三区电影| 国产91九色视频| 欧美国产在线视频| 亚洲aⅴ日韩av电影在线观看| 国产精品入口日韩视频大尺度| 96sao精品视频在线观看| 欧美日韩国产综合新一区| 亚洲欧美国产日韩天堂区| 国产欧美精品va在线观看| 欧美黄色成人网| 日韩av免费在线观看| 国产盗摄xxxx视频xxx69| 欧美日韩性视频在线| 日韩一区二区福利| 欧美精品少妇videofree| 美日韩精品免费视频| 日韩精品在线观看一区二区| 国产精品久久99久久| 亚洲男女性事视频| 欧美性视频网站| 国内免费精品永久在线视频| 国产成人精品视频在线观看| 97视频在线播放| 国产精品丝袜久久久久久高清| 亚洲精品v欧美精品v日韩精品| 欧美性猛交xxxx免费看| 亚洲一区二区三| 亚洲成人激情在线| 日韩av日韩在线观看| 亚洲伊人久久综合| 91av在线播放视频| 国产精品av电影| 亚洲天堂男人天堂| 一个人看的www欧美| 亚洲天堂色网站| 中文字幕日韩欧美| 久久久久久久久久久久久久久久久久av| 欧美精品激情在线| 668精品在线视频| 国产日韩欧美夫妻视频在线观看| 97久久超碰福利国产精品…| 久久伊人精品一区二区三区| 欧美电影免费在线观看| 韩国三级电影久久久久久| 欧美激情久久久久久| 成人国产精品日本在线| 欧美黄网免费在线观看| 欧美wwwxxxx| 久久国产天堂福利天堂| 日韩精品在线观看网站| 日本久久久a级免费| 色综合久久悠悠| 日韩中文字在线| 欧美一级免费视频| 亚洲色图在线观看| 国产精品久久久久久久久久久新郎| 午夜精品免费视频| 96pao国产成视频永久免费| 成人午夜黄色影院| 最好看的2019的中文字幕视频| 欧美一区二区三区艳史| 久久精品久久久久久国产 免费| 久久久久久久久久久免费精品| 日韩精品亚洲视频| 久久久爽爽爽美女图片| 亚洲精品一二区| 在线中文字幕日韩| 久久久综合免费视频| 久久夜色精品国产欧美乱| www.日本久久久久com.| 欧美另类第一页| 欧美激情一区二区三区久久久| wwwwwwww亚洲| 狠狠久久亚洲欧美专区| 日韩暖暖在线视频| 亚洲免费福利视频| 久久精品视频在线观看| 亚洲va久久久噜噜噜久久天堂| 欧美视频在线观看 亚洲欧| 国产香蕉97碰碰久久人人| 久久久之久亚州精品露出| 91久久精品日日躁夜夜躁国产| 日本a级片电影一区二区| 国模极品一区二区三区| 欧美电影免费观看电视剧大全| 亚洲精品电影在线| 91精品国产综合久久香蕉922| 亚洲精品aⅴ中文字幕乱码| 91九色视频在线| 欧美午夜激情在线| 久久精品视频导航| 亚洲天堂av图片| 亚洲午夜精品视频| 青青久久av北条麻妃黑人| 国产精品一二三视频| 91精品在线一区| 亚洲国产另类久久精品| 激情亚洲一区二区三区四区| 97成人精品视频在线观看| 欧美极品少妇xxxxⅹ喷水| 91夜夜未满十八勿入爽爽影院| 欧美性猛交xxx| 亚洲国产欧美一区二区三区久久| 亚洲一区二区三区成人在线视频精品| 国产亚洲欧美视频| 亚洲精品一二区| 亚洲男人av电影| 国产成人欧美在线观看| 亚洲视频一区二区| 亚洲乱码一区av黑人高潮| 久久久久久亚洲|