认识ADO和ADO.Net
ActiveX Data Object(简称ADO)是微软提供的数据访问模型,依据这个模型可很轻松的操作数据库。同时ADO受到微软所以开发工具的支持,所以无论是VB、VC、ASP开发都可以使用。所以开发ASP数据库应用程序,只需在代码中嵌入SQL(结构化查询语言)命令,用户就可以很轻松的输入、更新、和删除后台的数据库记录。当用户端的浏览器填好表单所要求输入的资料并按下“Submit(确认)”按钮后,经过互联网、内联网传送HTTP请求到WEB服务器,该请求在WEB服务器执行一个表单所指定的Active Server Pages程序(后缀名为.ASP的文档)。 从ADO.Net不仅仅是ADO的一个简单升级,它是微软.NET战略的一个重要组成部分,那么到底和以前有什么不同呢?现在就让本文来告诉你。
以前在ADO中进行数据处理的主要方法是OLEDB,现在在ADO.Net中也是如此。但是微软为了更好地支持目前广泛使用的两个数据库Oracle和SQL Server对OLEDB做了专门的扩展,它们分别是OracleClient和SQLClient 类,当然由于数据库产品很多,为了便于以前的OLEDB的程序升级,故也对OLEDB本身做了升级处理。在.Net中表现为OLEDB类。
那么这三个类——OLEDB、OracleClient和SQLClient在编程使用上到底有什么不同呢?值得庆幸的是在.Net中进行数据库的编程时,不管你使用上面提到的3个类中的哪一个类,这3个类在语法和用法上都大同小异,可以用一通百通来形容。
怎样学习ADO.Net技术
笔者在学习和使用了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,然后建立一个数据库和一个表,并且在表中一定要有主键,随便输入一些数据。完成后保存此表。
本文使用的表结构如下:
表名:使用系统默认的表名table1
然后打开VS.Net建立一个新的工程,并从工具箱中将“SqlDataAdapter”控件拖动到窗口底部,随后“数据适配器配置向导”窗口会自动运行,按照向导提示完成操作(如图)。
![](http://www.chinaitpower.com/A-A-A/2005/07/17/20050717083058100757_1.jpg)
需要注意的是,在出现的“生成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部分加入“Sql DataAdapter1.FillDataSet11 ″Table1″”,代码:
Private Sub Form1_LoadByVal sender As System.Object ByVal e As System.EventArgs Handles MyBase.Load SqlDataAdapter1.FillDataSet11 ″Table1″'将表中的数据添加到DataSet1中。 End Sub | 添加一个Button1在Button1_Click中加入“SqlDataAdapter1.UpdateDataSet11 ″Table1″”代码。
Private Sub Button1_ClickByVal sender As System.Object ByVal e As System.EventArgs Handles Button1.Click SqlDataAdapter1.UpdateDataSet11″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_ClickByVal sender As System.Object ByVal e As System.EventArgs Handles Button1.Click Dim con As New OleDb.OleDbCon nection″Provider=SQLOLEDB.1Integrated Security=SSPIPersist Security Info=FalseInitial Catalog=NorthwindData Source=.Use Procedure for Prepare=1Auto Translate=TruePacket Size=4096Workstation ID=JUse En cryption for Data=FalseTag with column collation when possible=False″'建立与数据库的连接 con.Open'打开连接 Dim cmd As New OleDb.OleDbCommand″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_ClickByVal sender As System.Object ByVal e As System.EventArgs Handles Button2.Click Dim con2 As New OleDb.OleDbCon nection″Provider=SQLOLEDB.1Integrated Security=SSPIPersist Security Info=FalseInitial Catalog=jkData Source=.Use Procedure for Prepare=1Auto Trans late=TruePacket Size=4096Workstation ID=JUse Encryption for Data=FalseTag with column collation when possible=False″'建立与数据库的连接 con2.Open'打开连接 Dim cmd As New OleDb.OleDbCom mand″create table kkid int identity11 not null constraint id primary keyname char4 not null″ con2 '建立表kk cmd.ExecuteNonQuery Dim cmd2 As New OleDb.OleDbCom mand″create table ppid int not nullads char20 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的编程其实本身并不复杂。 |