欢迎来到天天文库
浏览记录
ID:24645534
大小:57.50 KB
页数:6页
时间:2018-11-15
《基于.的远程分布式数据库查询系统设计与实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于.的远程分布式数据库查询系统设计与实现本文以分布数据信息查询和应用实际出发,以分布在异地的两所高校为研发背景,实现远程分布式数据库查询系统,实现信息资源共享的目标。并对涉及的异地数据通信技术、远程对象的建立、发布等技术进行详细讨论。关键词:C#;系统设计;系统实现;相关技术随着计算机X络、数字通信技术和数据库的发展,办公方式逐渐向自动化方向发展,数据的分布存储和分布处理的分式数据库系统的应用越来越广泛,因此对数据的查询要求也越来越高,异地查询是急需解决的问题之一。本文以所在单位与其兄弟单位为研发背景,以远程分布式数据库查询
2、系统为出发点,讨论基于.的远程分布式数据库查询系统的设计方案及实现,并着重介绍在此实现过程中涉及的c#.的Remoting技术解决各异地间数据的通信问题,远程对象的建立、发布与获得方面等技术。1.设计思路 本系统以两所高校为例,建立一个简单的远程分布式数据库查询系统,以实现两所高校的学生住处的本地数据库查询、远程数据库查询及本地异地数据库联合查询的功能。 查询分为3种类型,即本地查询、远程查询和联合查询。设计思路如下:首先为系统设计统一的数据库,分别存放于两地,数据库系统以SQLServer作为后台;其次,建立一个提供数据
3、库服务(DbServer)的动态链接库(DLL),将查询时所要用到的一些服务(如远程对象的发布和获得等)和函数(如本地异地数据表的查询、数据表的远程创建和删除、表间的连接和合并等)置入该DLL中,各地需要使用此DLL,以便查询时对一些服务和函数进行调用。开发客户端查询界面,包括3个查询任务:本地查询、远程查询和联合查询,远程分布式数据库查询系统的业务流程如图1所示。2.关键技术2.1分布式数据库技术 分布式数据库技术的关键是系统能够发布本地的远程对象并获取异地所发布的远程对象。要发布远程对象,首先要设置一个X络端口号,然后创
4、建并注册一个通道,最后发布该服务器端的激活对象。异地服务器根据IP地址和X络端口号即可获取所发布的远程对象。2.1.1远程对象的发布 创建一个信道:信道可跨越远程处理边界传输消息。当客户端调用远程对象时,该调用即被序列化为一个消息,该消息通过客户端信道发送并通过服务器信道接收。然后将其反序列化并进行处理。所有返回值都通过服务器信道传输,并通过客户端信道接收。如:TcpChannelMyChannel=neand类对象实现对数据库运行创建、插入、删除、更新、查询等操作。3.基于.的远程分布式数据库查询系统程序实现3.1建立数据
5、库服务对象(DbServer)的DLL工程为实现对远程对象的发布和获取,并完成本异地数据表的查询、数据表的远程创建和删除、表间的连接和合并等操作,首先建立一个提供数据库服务(DbServer)的动态链接库(DLL),将所要用到的服务置入该DLL中,和应用程序一起布置到异地,以便查询时对一些服务和函数进行调用。3.2创建数据库和系统表系统采用Access作为数据库管理系统,在应用程序布署的各地都有一个相同的本地数据库DDB,该数据库中至少含有4个结构相同的数据表,即:serverIP(服务器信息)表、studentInfo(学生
6、信息)表、studentScoreInfo(学生成绩信息)表和tempNumber(临时表序号)表。3.3DBServer的查询方法系统的查询分为两种方式,一种是本地查询,另一种是异地查询。3.3.1本地查询实现本地查询只需传入查询的SQL串即可完成。具体实现代码如下: PublicDataSetQuery(stringqueryString) { If(conn.State==ConnectionState.Closed)conn.Open(); DataSetds; Try { Ds=neandmyCmd=n
7、eand(QueryString,Conn); Adapter.Selectmand=myCmd; Adapter.Fill(dt); Ds.Tables.Add(dt); } Finally { Conn.Close(); } Returnds; }3.3.2异地查询实现异地查询需要传入查询地的标识与查询的SQL串,即可通过远程对象进行查询。具体实现如下: PublicDataSetQuery(stringlocation,stringqueryString) { If(conn.State==Co
8、nnectionState.Closed)conn.Open();//如果连接关闭,则打开数据库连接 DataSetds; Try { If(this.serverID==Location) { Ds=neandmyCmd=neand(QueryString,Co
此文档下载收益归作者所有