自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

概述C#存取Access數(shù)據(jù)庫(kù)

開(kāi)發(fā) 后端
本文介紹C#存取Access數(shù)據(jù)庫(kù),我們利用.Net 遠(yuǎn)程處理功能將連接和存取Access的行為封裝為一個(gè)遠(yuǎn)程對(duì)象,供網(wǎng)絡(luò)中其它客戶端通過(guò)調(diào)用該遠(yuǎn)程對(duì)象C#存取Access數(shù)據(jù)庫(kù)。

目前,基于數(shù)據(jù)庫(kù)服務(wù)器的桌面管理程序和Web程序已經(jīng)有太多的應(yīng)用了,尤其是網(wǎng)絡(luò)的大量普及,孤立地?cái)?shù)據(jù)庫(kù)管理系統(tǒng)無(wú)法勝任分布式管理應(yīng)用,但是面對(duì)基于Access數(shù)據(jù)庫(kù)的現(xiàn)有的桌面應(yīng)用我們也無(wú)法完全的摒棄。我們利用.Net 遠(yuǎn)程處理功能將連接和存取Access的行為封裝為一個(gè)遠(yuǎn)程對(duì)象,供網(wǎng)絡(luò)中其它客戶端通過(guò)調(diào)用該遠(yuǎn)程對(duì)象C#存取Access數(shù)據(jù)庫(kù)。我們以 C# 2005 為開(kāi)發(fā)語(yǔ)言來(lái)實(shí)現(xiàn)上述功能。

一、技術(shù)要點(diǎn)

我們都知道Windows應(yīng)用程序在運(yùn)行時(shí)會(huì)啟動(dòng)一個(gè)進(jìn)程,其總包括若干線程,不同的進(jìn)程之間通信是開(kāi)發(fā)分布式應(yīng)用程序所必需的,傳統(tǒng)上,這不僅需要深入了解通信流兩端上進(jìn)程的對(duì)象,而且還要深入了解低級(jí)別協(xié)議的宿主、應(yīng)用程序編程接口以及配置工具等??傊且豁?xiàng)需要大量專業(yè)知識(shí)和經(jīng)驗(yàn)的復(fù)雜任務(wù)。

幸好.Net為我們提供了遠(yuǎn)程處理功能,它所提供的通信方法可以快速而方便地完成上述建立通信的任務(wù)。因此,無(wú)論是需要快速開(kāi)發(fā) Web 應(yīng)用程序,還是要花費(fèi)更多時(shí)間生成關(guān)鍵的企業(yè)范圍的應(yīng)用程序,.NET Framework 都會(huì)提供支持。通過(guò) .NET 遠(yuǎn)程處理,客戶端應(yīng)用程序可以使用同一臺(tái)計(jì)算機(jī)或其網(wǎng)絡(luò)中其他任何可用的計(jì)算機(jī)上的其他進(jìn)程中的對(duì)象。

要使用 .NET 遠(yuǎn)程處理創(chuàng)建可以讓兩個(gè)對(duì)象跨越應(yīng)用程序直接通信的應(yīng)用程序,只需生成以下對(duì)象即可:

1.可遠(yuǎn)程處理的對(duì)象。

2.偵聽(tīng)對(duì)該遠(yuǎn)程對(duì)象的請(qǐng)求的應(yīng)用程序即服務(wù)器程序。

3.對(duì)該遠(yuǎn)程對(duì)象發(fā)出請(qǐng)求的客戶端應(yīng)用程序。

.Net下不同應(yīng)用程序中的對(duì)象的通信方式有兩種:一種是跨應(yīng)用程序域邊界傳輸對(duì)象副本,一種是使用代理交換消息。MarshalByRefObject 是通過(guò)使用代理交換消息來(lái)進(jìn)行通信的對(duì)象的基類。當(dāng)跨應(yīng)用程序使用遠(yuǎn)程對(duì)象時(shí),對(duì)象的基類必須是從 MarshalByRefObject 繼承。

二、程序?qū)崿F(xiàn)

我們先在VS的IDE中創(chuàng)建名為“TestRemoteAccess”的新的解決方案來(lái)容納前述用來(lái)實(shí)現(xiàn)遠(yuǎn)程處理的三個(gè)項(xiàng)目,首先向解決方案中添加名為“RemoteObject”的類庫(kù),然后將默認(rèn)創(chuàng)建的類名更改為“CRemoteAccess”,并且繼承于“MarshalByRefObject”,代碼如下:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;   
  4. namespace RemoteObject  
  5. {  
  6. public class CRemoteAccess : MarshalByRefObject  
  7. {}  
  8. }  

我們需要在該對(duì)象內(nèi)創(chuàng)建C#存取Access數(shù)據(jù)庫(kù)的所有函數(shù),供服務(wù)端客戶端程序同時(shí)調(diào)用。用于C#存取Access數(shù)據(jù)庫(kù)的方法這里不再詳述,參看附件源碼。

首先所有需要向客戶端公開(kāi)的函數(shù)其可見(jiàn)性都必須設(shè)為 public.變量m_ConnString需要設(shè)置為public static,目的是當(dāng)客戶端調(diào)用了SetRemoteAccessConnString后將數(shù)據(jù)庫(kù)連接字符串保存下來(lái)以備在本次連接期間始終能夠訪問(wèn),代碼如下:

  1. public static string m_ConnString;  
  2. ……  
  3. public void SetRemoteAccessConnString(string Connstr)  
  4. {  
  5. m_ConnString = Connstr;  
  6. }  
  7. ……  


成功連接了Access數(shù)據(jù)庫(kù)后我們需要返回?cái)?shù)據(jù)集給請(qǐng)求的客戶端進(jìn)行顯示和編輯,在遠(yuǎn)程對(duì)象中我們聲明了幾個(gè)相關(guān)函數(shù):

  1. private void LoadData(string SqlStr, string TableName)  
  2. public void SaveData(DataTable ClientDataTable)  
  3. public DataTable GetUserTable(string SqlStr, string TableName) 

客戶端可以傳遞SQL查詢腳本通過(guò)調(diào)用 GetUserTable來(lái)獲取相關(guān)數(shù)據(jù)庫(kù)表的數(shù)據(jù),并返回一個(gè)DataTable,然后可以將該DataTable附值給DataGridView以便將數(shù)據(jù)顯示出來(lái)。GetUserTable通過(guò)調(diào)用私有的LoadData 函數(shù)來(lái)完成對(duì)數(shù)據(jù)的獲取。SaveData函數(shù)用于將編輯過(guò)的數(shù)據(jù)集C#存取Access數(shù)據(jù)庫(kù)文件,代碼如下:

  1. m_connection.Open();  
  2. m_adapter.Update(ClientDataTable); 

【編輯推薦】

  1. C# 4.0 Dynamic關(guān)鍵字全解析
  2. 淺談C#中構(gòu)造函數(shù)和成員函數(shù)
  3. C#回調(diào)函數(shù)及API應(yīng)用淺析
  4. 詳解C# Object.Equals函數(shù)
  5. C#調(diào)用Windows API函數(shù)
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2024-04-18 09:56:16

2009-08-17 17:42:57

C#數(shù)據(jù)庫(kù)操作類

2009-08-25 12:50:32

數(shù)據(jù)庫(kù)常用C#代碼

2009-08-19 16:30:55

C#操作Access數(shù)

2009-08-03 14:17:18

C#連接AccessC#連接SQL Ser

2009-08-28 13:03:55

C#壓縮Access數(shù)

2009-09-01 09:45:49

Visual C#對(duì)數(shù)

2009-08-25 16:36:16

C#進(jìn)行數(shù)據(jù)庫(kù)編程

2009-08-19 16:40:26

C#操作Access數(shù)

2010-09-13 09:03:49

Access數(shù)據(jù)庫(kù)

2009-08-19 16:19:01

C#操作Access數(shù)

2009-08-07 13:16:27

c#相對(duì)路徑寫法

2009-08-28 16:14:26

C#實(shí)現(xiàn)加載動(dòng)態(tài)庫(kù)

2009-08-11 13:35:13

C# Berkeley

2009-03-19 10:08:09

C#數(shù)據(jù)庫(kù)查詢

2009-08-06 18:03:21

C#相對(duì)路徑

2010-10-26 15:21:11

連接Oracle數(shù)據(jù)庫(kù)

2009-08-07 16:19:00

C#下數(shù)據(jù)庫(kù)編程

2009-08-12 14:27:36

訪問(wèn)MySQL數(shù)據(jù)庫(kù)C# ODBC

2009-08-24 18:09:13

C#調(diào)用Oracle數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)