首页 > 范文大全 > 正文

基于ADO.NET技术的SQL SERVER动态连接组件的设计和实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于ADO.NET技术的SQL SERVER动态连接组件的设计和实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:当今世界,信息已经成为各个部门的重要财富和资源。在信息系统的实现过程中,需要经常编写数据库连接代码。通过对.NET技术的研究,实现基于技术的sql server动态连接组件设计实现。在信息管理系统软件开发中,达到实现代码的复用,提高软件开发的效率和稳定性,减小软件后期维护的难度的目的。

关键词:信息管理系统;数据库连接;动态组件;ADO. NET

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30629-02

Design and Development of the Dynamic Link Component of the SQL Server Based on Net Technology

LI Yan

(Xi'an Shiyou Uniersity,Xi'an 710065,China)

Abstract:In today wold, Information is the wealth and resources of all enterprises. Developing management information system,the codes of data base linked is used to be writed and used. Through studying .Net technology, the design and development of the dynamic link component of the SQL Server has be realizated based on technology. In the development of management information system,the attitude whichthe codes can be multipled ,the efficiency and stabilization can be improved, the difficulty of software maintain can be increased is realizated.

Key words:data base;link;dynamic Component;

1 引言

当今世界,信息资源已经成为各个部门的重要财富和资源。随着信息的日益庞大,建立一个满足各部门信息处理要求的信息系统也成为一个企业或组织生存和发展的重要条件。在信息系统的信息处理过程中,几乎都要通过数据库连接来完成。数据库连接不仅是信息系统必不可缺少的一个重要组成部分,而且是系统中信息处理和信息存储的桥梁和纽带。

在信息系统的实现过程中,需要经常编写数据库连接代码。这样开发的软件不仅效率低,而且稳定性差,同时也增加了软件后期的维护难度。本文主要介绍在Visual C#.NET中,实现基于技术的SQL SERVER动态连接组件的设计和实现。在数据库的选用上,采用了微软公司的SQL Server 2000。

2 技术简单介绍

是微软.NET框架中的一种新的数据访问技术[1] [2],它能用于访问关系型数据库系统,如 SQL Server 2000,及很多其他已经配备了OLE DB供应器的数据源。

为关系数据、XML和应用程序数据提供访问,能从数据操作到可单独或连续使用的离散组件的数据访问。

ADO. NET代表了处理位于本地或者分布式数据库中数据的下一个革新[1],这是由它的优势决定的:

第一、以往ADO的数据存取处理主要依赖于两层结构,而现在的数据处理是采用三层以上结构,构建了一个更为合理的数据处理环境。

第二、是基于XML的,这表示几乎任何数据类型都可以被支持和传递。

第三、DataSet使得ADO. NET摆脱了由ADO所提供的基于连接的模型,而将其转变成一个更加类似消息的、面向无连接的模型。这样遍历一个DataSet可以不必打开到数据源的任何连接。这一改变带来了许多好处,包括通过防火墙发送数据的能力,消除了COM中的类型转换,以及一种真正脱机处理数据的方法。

ADO. NET的类由两大部分组成:

数据提供程序(Data provident,有时也叫托管提供程序)和数据集(DataSet)。的体系结构如图1所示。前者是一组包括Connection、Command等对象在内组件,负责数据库连接和数据传输的功能;后者是支持的断开式、分布式方案的核心对象,它不仅是数据源检索记录的缓冲,而且为数据源数据提供一个断开式地存储,其最大特点是允许用户以断开的方式操纵从数据库中返回的结果集,从而减少了不必要的网络开销和数据库开销。

图1 的体系结构

使编程模式从一个客户端/服务器、基于连接的模式转变到了一个新的模式[3],这个新模式可以让断开的前端下载记录、离线工作、然后重新连接来提交变化。

3 动态组件的设计和实现

随着计算机网络技术的不断发展和应用,现在MIS系统的开发和实现过程中,经常会通过对数据库的连接操作实现对后台数据进行操作和分析,

设计和实现基于技术的SQL SERVER动态连接组件的作用和目的就是应用软件设计和开发的复用思想,提高软件的开发效率,加强软件的稳定性,减少软件的后期维护。

SQL SERVER动态连接组件应该具有一定的通用性,在MIS系统与后台数据库之间存在着连接和对数据的操作关系。因此,动态连接组件也应该具备这样的一些属性和方法来完成系统所需要的功能。

一般情况下,系统对将数据库的操作分为两类:即操作后需要返回数据集和操作后不返回数据集两类。第一类一般是用在对数据库数据的查询和统计上,其显示结果有带序号和不带序号两种;另一类一般是用在对数据库数据的刷新操作上的,例如:修改,插入,删除等,它一般只返回对数据操作是否成功的信息,而不返回具体的数据信息。

对数据库的每一步操作都在对后台数据库连接的基础上进行的。

根据上述分析,可以将数据库动态组件流程框图如图2所示。

图2 数据库动态组件流程框图

为了能够实现数据库动态连接组件通用的基本功能,在my_sql类中定义了四个属性和两个方法,它们分别是:

private string tmperror_flag; //错误标志

public string tmpdabaconnect; //sql数据库连接字段

public string tmpslqcommand;//对后台数据的操作

public DataTable tmptable; //返回数据集结果临时

public string error_message;//错误信息

public bool my_get_table(string dabaconnect,string sqlcommand,bool xh_flag) ;//查询或分析数据操作

public bool change_usemeg(string sqlcommand,string dabaconnect) ;//刷新数据操作

在my_get_table()方法中,根据xh_flag的值可以返回带有序号的数据集或不带序号的数据集。my_get_table()方法的主要代码如下:

public bool my_get_table(string sqlcommand,bool xh_flag)

//xh_flag=true 表示有序号;xh_flag=false表示无序号

{ bool flag=true;//默认;

tmperror_flag="0";//默认

string connectionstring=tmpdabaconnect;

SqlConnection myConnection=new SqlConnection();//连接数据库字符串

try

{ myConnection=new SqlConnection(connectionstring);

myConnection.Open();

DataTable mytable=new DataTable();

if(xh_flag)

{ DataColumn col=mytable.Columns.Add("OrderID",typeof(int)); //给表中加入序号列

col.AutoIncrement=true;

col.AutoIncrementSeed=1;

col.AutoIncrementStep=1;

col.ReadOnly=true;}

String mycommandstring=sqlcommand;

try

{ SqlDataAdapter mydata=new SqlDataAdapter();

mydata.SelectCommand=new SqlCommand(mycommandstring,myConnection);

mydata.Fill(mytable);

tmptable=mytable; }

catch {

tmperror_flag="2";

flag=false; } }

catch

{ tmperror_flag="1";

flag=false; }

finally

{ if(myConnection.State==ConnectionState.Open)

{ myConnection.Close(); } }

return flag; }

my_get_table()方法的调用如下:

my_sql tmpdata=new my_sql ();

string mycommand=" select user_id,user_password from liyan_sy";

DataTable mytable0=new DataTable();

if(tmpdata.my_get_table(myconnect,mycommand,false))

{ mytable0= tmpdata. Tmptable; //返回数据集 }

else

{ string tmperror= tmpdata. error_message;//错误信息提示 }

change_usemeg()方法的设计思路和my_get_table()方法基本相同,只不过它仅返回对数据库更新操作是否成功的信息,而不返回数据集。

4 结束语

用Visual C#来做组件,其实是一件很容易的事情。首先建立一个新类库工程文件编译工程文件生成组件,该组件会在工程文件的bin\debug目录里,文件扩展名是DLL。其次就是在应用程序中直接调用该文件即可。

技术对SQL Server连接和操作,可以通过中的System.Data.SqlClient类,直接操作SQL Server,提高对数据库操作的速度。

经过多次的调试和实际的应用中,对该组件不断进行修改和完善,已经在不少自行开发和研制的系统中得到了很好的使用。

参考文献:

[1]David Sceppa. ADO. NET Core Reference[M].清华大学出版社,2004.

[2]邓维斌.周玉敏.访问数据库的方法及实现[J].电脑学习,2005.10.

[3]李永革.潘卫.邢红梅.深入理解的更新机制[J].计算机应用,2005.12.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。