.Net中的ADO编程

IT商界

  认识ADO和ADO.Net

  ActiveX Data Object(简称ADO)是让用户可以与Active Server Pages(简称ASP)结合开发基于数据库的网页内容,只需在网页中嵌入SQL(结构化查询语言)指令,用户就可以在浏览器界面中输入、更新、和删除网站后台的数据库信息。当用户端的浏览器填好表单所要求输入的资料并按下“Submit(确认)”按钮后,经过互联网、内联网传送HTTP请求到Web服务器,该请求在WEB服务器执行一个表单所指定的Active Server Pages程序(后缀名为.ASP的文档)。

  ADO.Net从名称上就可以知道,他是ADO的升级版,而后面的.Net表示微软已经将它作为.Net中的一个重要的编程组件了。其实在VS6.0的时候要想对数据库进行操作,就必须使用ADO技术。现在到了.Net中也是同样的,由此可见ADO技术在软件开发中的重要位置。当然既然是对老版本的一次升级,那么到底和以前有什么不同呢?现在就让本文来告诉你。

  以前在ADO中进行数据处理的主要方法是OLEDB,现在在ADO.Net中也是如此。但是Microsoft为了更好地支持目前广泛使用的两个数据库的Oracle和SQL Server对OLEDB做了专门的扩展,它们分别是OracleClient和SQLClient类,当然由于数据库产品很多,为了便于以前的OLEDB的程序升级,故也对OLEDB本身做了升级处理。在.Net中表现为OLEDB类。

  怎样学习ADO.Net技术

  那么这三个类在编程使用上到底有什么不同呢?值得庆幸的是在.Net中进行数据库的编程时,不管你使用上面提到的3个类中的哪一个类,这3个类在语法和用法上都大同小异,可以用一通百通来形容。

  笔者在学习和使用了ADO.Net编程后,总结出下面3个必需的步骤,而且这3个步骤的顺序是绝对不可以调换的,如果在以后的编程中发现3个步骤的顺序换了或缺了一个步骤,那么你的代码肯定是错的:

  1.使用对应类中的连接方法来连接数据库。如使用SQLClient类,那么就用SqlConnection1建立数据库的连接。

  2.打开此链接。

  3.执行对应类中的命令方法来指定要执行的SQL语句。如使用SQLClient类就使用SqlCommand执行指定的SQL语句。

  下面举出的两个例子就是在.Net中使用ADO.Net编程的代码。由于SQL Server在使用中比Oracle简单,所以这里的数据库使用Microsoft的SQL Server 2000。原因是它在安装后无须配置就可以直接使用了。既然访问的是SQL Server,那么使用的类当然是SQLClient类。这两个例子是:

  1.在数据库中对数据进行添加,删除,修改。

  2.利用ADO技术建立一个SQL Server 2000的数据库。

  例一

  启动SQL server2000,然后建立一个数据库和一个表,并且在表中一定要有主键,随便输入一些数据。完成保存此表。

  本文使用的表结构如下:

  id列  int型  标志列  主键

  d列  char型

  表名:使用系统默认的表名table1

  打开VS.Net建立一个新的工程,然后从工具箱中将“SqlDataAdapter”控件拖动到窗口底部,随后“数据适配器配置向导”窗口会自动运行,按照向导提示完成操作。需要注意的是在出现“生成SQL语句”窗口中要输入标准的select语句,在本例中我们将从表Table1中返回id和d这两列。所以应该输入“SELECT id,d FROM Table1”语句,当然单击“查询生成器”按钮系统也可以自动生成这条语句。

  当完成“数据适配器配置向导”后,你会在窗口的底部发现系统自动添加了“SqlConnection1”。接下来右击“SqlDataAdapter1”,在快捷菜单中选择“生成数据集”,随后可以看见“生成数据集”设置窗口,保持默认设置并单击“确定”。现在又会发现在设计窗口下多了一个“Dataset11”。

  到此为止就差最后一个控键“SqlCommand”,我们只要在工具栏中将它拖放过来并修改其属性的“Connection”设置为“SqlConnection1”,并在“CommandText”属性中利用“查询生成器”为它生成select语句即可。到现在为止,我们就完成了Ado.Net访问数据库的一大半了。

  网格是显示数据的最好方法,为了让数据显示在网格中,我们需要添加此控件并且修改其属性。添加的方法就是直接从工具箱中拖过来即可。不过它的属性设置倒是很简单,只要将“Datasource”设置为“Dataset11.table”即可,table表示表的名字。

  最后添加两行代码即可完成对数据的添加,删除,修改的操作。

  在Form1_Load部分加入“SqlDataAdapter1.Fill(DataSet11,"Table1")”代码

  Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load

  SqlDataAdapter1.Fill(DataSet11,"Table1")'将表的数据添加到DataSet1中。

  End Sub

  添加一个Button1在Button1_Click中加入“SqlDataAdapter1.Update(DataSet11,"Table1")”代码

  Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click

  SqlDataAdapter1.Update(DataSet11,"Table1")'完成数据库的添加,删除,修改功能。

  End Sub

  程序说明:其中SqlDataAdapter1.Fil语句是把表中具体的数据添入DataSet11后,而SqlDataAdapter1.Update表示当完成对数据的修改后使用Update进行数据库的更新,使修改的数据生效。按“F5”运行程序,你就可以看见表中的数据都显示出来了,同时你可以随意对其进行修改。如要删除数据,只要按下键盘上的“del”键即可。

  下面是文中使用控件的一个简单的介绍:

  SqlDataAdapter:建立数据库的连接,完成数据库的添加,删除,修改功能的配置。

  SqlConnection:建立连接字符为SqlCommand提供连接依据。

  DataSet1:加载表结构和表数据,以便在表格中显示具体数据。

  SqlCommand:用来执行对表的各种具体的操作。

  例二

  这里为了让大家知道OLEDB和SQLClient在.Net中多么接近,此例子将使用.Net中的OLEDB类。在这个程序中我们将使用ADO.Net中的OLEDB类和SQL语句来建立数据库,表。添加2个命令按钮,不修改任何属性,并加入代码如下:

  Public Class Form1

  Inherits System.Windows.Forms.Form

  Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)

  Handles Button1.Click

  Dim con As New OleDb.OleDbConnection("Provider=SQLOLEDB.1;Integrated

  Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data

  Source=.;Use Procedure for Prepare=1;Auto Translate=True;Packet

  Size=4096;Workstation ID=J;Use Encr

  yption for Data=False;Tag with column collation

  when possible=False")‘建立与数据库的连接

  con.Open()'打开链接

  Dim cmd As New OleDb.OleDbCom

  mand("create database jk",con)'创建数据jk

  cmd.ExecuteNonQuery()'执行创建命令

  con.Close()'关闭连接

  '建立数据库

  End Sub

  程序说明:在Button1_Click中可以看出连接对象的连接字符串和前面由系统自动生成的连接字符串不同。原因是我门要创建的新数据库jk还不存在,所以为了使连接数据库成功,并且有足够的权利来建立jk数据库,就必须通过以SQLServer管理员的身份连接一个sql server中已有的数据库,获得对整个sql server的访问控制权限,再建立jk数据库。这里连接的是Northwind数据库。而后面的Button2_Click直接连接到jk数据库。因为我们要在jk数据库中建立表。

  Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button2.Click

  Dim con2 As New OleDb.OleDbConn

  ection("Provider=SQLOLEDB.1;Integrated

  Security=SSPI;Persist Security Info=False;Initial Catalog=jk;Data Source=.;Use

  Procedure for Prepare=1;Auto Transla

  te=True;Packet Size=4096;Workstation ID=J;Use

  Encryption for Data=False;Tag with column collation when possible=False")'建立与数据库的连接

  con2.Open()'打开连接

  Dim cmd As New OleDb.OleDbCom

  mand("create table kk(id int identity(1,1) not

  null constraint id primary key,name char(4) not null)",con2)'建立表kk

  cmd.ExecuteNonQuery()

  Dim cmd2 As New OleDb.OleDbCom

  mand("create table pp(id int not null,ads char(20) null)",con2)'建立表pp

  cmd2.ExecuteNonQuery()'执行建立表命令

  con2.Close()'关闭连接

  '建立2个表

  End Sub

  End Class

  程序说明:程序中Button2_Click建立了两个表,kk和pp。其中kk包括一个种子列并且设定为主键。Pp是一个一般的表。其实通过Button2_Click中所讲的方法,我们还可以建立数据库中的存储过程,约束等。其方法就是将OleDbCommand后的建立表的SQL语句换成存储过程,约束的SQL语句即可。由于SQL语句已经超出了本文的范围,所以这里不做讲解。

  总结

  对于ADO.Net的编程来说,除了要掌握ADO.Net的技术外,还必须掌握数据库的一些知识。本文只是编写了两个简单的数据库程序,其目的是让大家知道ADO.Net的编程其实本身并不复杂。

  在第一个例子中我们使用.Net提供的工具很快就可以完成对数据库的访问。在第个二例子中我们可以看见,不管是建立数据库还是建立表,其代码的结构都大同小异,不同的是使用了不一样的SQL语句。它的作用是操作数据库。所以要想学好ADO.Net的编程,读者还必须掌握SQL语句。