概述C 概述财富观的三个主要内涵
创始人
2024-04-23 14:11:05
0

目前,基于数据库服务器的桌面管理程序和Web程序已经有太多的应用了,尤其是网络的大量普及,孤立地数据库管理系统无法胜任分布式管理应用,但是面对基于Access数据库的现有的桌面应用我们也无法完全的摒弃。我们利用.Net 远程处理功能将连接和存取Access的行为封装为一个远程对象,供网络中其它客户端通过调用该远程对象C#存取Access数据库。我们以 C# 2005 为开发语言来实现上述功能。

一、技术要点

我们都知道Windows应用程序在运行时会启动一个进程,其总包括若干线程,不同的进程之间通信是开发分布式应用程序所必需的,传统上,这不仅需要深入了解通信流两端上进程的对象,而且还要深入了解低级别协议的宿主、应用程序编程接口以及配置工具等。总之,它是一项需要大量专业知识和经验的复杂任务。

幸好.Net为我们提供了远程处理功能,它所提供的通信方法可以快速而方便地完成上述建立通信的任务。因此,无论是需要快速开发 Web 应用程序,还是要花费更多时间生成关键的企业范围的应用程序,.NET Framework 都会提供支持。通过 .NET 远程处理,客户端应用程序可以使用同一台计算机或其网络中其他任何可用的计算机上的其他进程中的对象。

要使用 .NET 远程处理创建可以让两个对象跨越应用程序直接通信的应用程序,只需生成以下对象即可:

1.可远程处理的对象。

2.侦听对该远程对象的请求的应用程序即服务器程序。

3.对该远程对象发出请求的客户端应用程序。

.Net下不同应用程序中的对象的通信方式有两种:一种是跨应用程序域边界传输对象副本,一种是使用代理交换消息。MarshalByRefObject 是通过使用代理交换消息来进行通信的对象的基类。当跨应用程序使用远程对象时,对象的基类必须是从 MarshalByRefObject 继承。

二、程序实现

我们先在VS的IDE中创建名为“TestRemoteAccess”的新的解决方案来容纳前述用来实现远程处理的三个项目,首先向解决方案中添加名为“RemoteObject”的类库,然后将默认创建的类名更改为“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. }  

我们需要在该对象内创建C#存取Access数据库的所有函数,供服务端客户端程序同时调用。用于C#存取Access数据库的方法这里不再详述,参看附件源码。

首先所有需要向客户端公开的函数其可见性都必须设为 public.变量m_ConnString需要设置为public static,目的是当客户端调用了SetRemoteAccessConnString后将数据库连接字符串保存下来以备在本次连接期间始终能够访问,代码如下:

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


成功连接了Access数据库后我们需要返回数据集给请求的客户端进行显示和编辑,在远程对象中我们声明了几个相关函数:

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

客户端可以传递SQL查询脚本通过调用 GetUserTable来获取相关数据库表的数据,并返回一个DataTable,然后可以将该DataTable附值给DataGridView以便将数据显示出来。GetUserTable通过调用私有的LoadData 函数来完成对数据的获取。SaveData函数用于将编辑过的数据集C#存取Access数据库文件,代码如下:

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

【编辑推荐】

  1. C# 4.0 Dynamic关键字全解析
  2. 浅谈C#中构造函数和成员函数
  3. C#回调函数及API应用浅析
  4. 详解C# Object.Equals函数
  5. C#调用Windows API函数

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...