浅谈ADO.NET数据访问技术

ADO.NET是一种新一代的数据存储技术,是一个全新的数据库访问模型,相对于ADO来说,ADO.NET支持内存中离线访问,与XML紧密集成在一起,让程序开发人员能够更加方便快捷的访问多种不用的数据源。 一般来说,我们访问数据库中数据的一般步骤就三个,(1)必须连接数据库;(2)向数据库发出SQL语句,告诉数据库我要哪些数据;(3)返回我需要的数据。这个过程就像一个前些年一个流行的问题,问:把大象

ADO.NET是一种新一代的数据存储技术,是一个全新的数据库访问模型,相对于ADO来说,ADO.NET支持内存中离线访问,与XML紧密集成在一起,让程序开发人员能够更加方便快捷的访问多种不用的数据源。 一般来说,我们访问数据库中数据的一般步骤就三个,(1)必须连接数据库;(2)向数据库发出SQL语句,告诉数据库我要哪些数据;(3)返回我需要的数据。这个过程就像一个前些年一个流行的问题,问:把大象装到冰箱里需要几步?需要三步,第一,把冰箱门打开;第二,把大象放进去;第三,把冰箱门关上。 下面我们看一段代码:
   Shared Function DBOperate(ByVal SQLString As String) As DataTable  
           Dim CONN As String  
           CONN = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=true;Data Source=metea.mdb;Jet OLEDB:Database Password=meteav1.0;"  
           Dim oleconn As New OleDb.OleDbConnection(CONN)  
           Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand(SQLString, oleconn)  
           cmd.CommandType = CommandType.Text  
               Dim ObjectdsDataSet As New DataSet()  
               Dim adapter As New OleDb.OleDbDataAdapter()  
               adapter.TableMappings.Add("Table", "TEMP")  
               adapter.SelectCommand = cmd  
               If oleconn.State <> ConnectionState.Open Then  
                   oleconn.Open()  '打开数据库连接  
               End If  
              'cmd.ExecuteNonQuery()  '执行SQL语句  
               If oleconn.State <> ConnectionState.Closed Then  
                   oleconn.Close() '关闭数据库连接  
               End If  
           adapter.Fill(ObjectdsDataSet) '填充数据集  
           Return ObjectdsDataSet.Tables("TEMP")  
       End If  
   End Function  
在上面的代码中,我们能发现什么呢?

一、Connection对象

在ADO.NET中,我们经常要使用到Connection对象,这个对象是负责连接数据库,提供所访问数据源的类型,所在位置名称等信息。 Connection对象有几个常用的属性: (1)ConnectionString:用于获取或者设置连接数据源的字符串。在这个程序段中,我们定义的字符串类型变量CONN就是我们这里面的ConnectionString,里面展示了数据源Microsoft.Jet.OLEDB.4.0,数据库名称为xcode.mdb,数据库密码为xcodev1.0。 (2)DataSource:获取要连接的名称,在这里面是xcode.mdb。 还有ConnectionTimeout:表示获取在尝试连接时终止尝试并生成错误之前的等待时间。DataBase:表示获取当前数据库或在连接打开后使用的数据库的名称。 Connection对象一般有几个常用的方法: (1)Open:表示打开数据库的连接。在上述代码段中,我们可以看到有一个oleconn.open()语句,这个意思就是打开数据库连接,也就是把数据在数据库中找出来的第一步。 (2)Close:表示关闭数据库连接,在上述代码段中,有一个oleconn.close()的语句,这就表示关闭了和数据库的连接,也就是我们把大象装进冰箱后,将冰箱门关上。

二、Command对象

在上述程序段中,我们还发现了一个语句,Dim cmd As OleDb.OleDbCommand = NewOleDb.OleDbCommand(SQLString, oleconn),这个语句中好像还发现了一个对象,也就是Command对象。 Command在英语中表示什么意思呢?表示命令,也就是说,这个对象是和我们刚才所说的第二个步骤有关系。 Command对象有几个常用的属性: (1)Connection:获取或设置Connection对象。 (2)ConnectionText:获取或设置要执行的SQL语句。 (3)CommandType:获取或设置命令的种类。(3种可选择的值) Command对象有几个方法: (1)ExecuteNonQuery:这个方法是用于执行SQL语句的,并返回SQL语句所查询到的数据(所影响到的行数)。这一个方法一般适用于执行Insert、Delete、Update等操作。在上述代码段中,我们能看到一句话:cmd.ExecuteNonQuery(),在这句话之前,我们使用了Dim cmd As OleDb.OleDbCommand = NewOleDb.OleDbCommand(SQLString, oleconn)创建了一个新的对象,然后使用cmd.方法()实现SQL语句的执行。 (2)ExecuteScalar:这个方法用于执行查询语句,生成一个DataReader。

三、DataAdapter对象

仔细观察后,我们还发现了一个DataAdapter,这个对象也很重要。如果大家仔细观察的话,会发现有些网卡的英文中就有一个单词Adapter,DataAdapter对象又称为数据适配器,主要作用就是在数据库和DataSet对象之间传递数据。(稍后就说DataSet对象)根据Command对象的要求,然后将所得到的数据填充到DataSet对象中。 DataAdapter对象有几个常用的属性: (1)SelectCommand:用于设置从数据库中选择数据的SQL语句或者存储过程。这个属性可以在创建DataAdapter属性的时候指定,然后利用“SqlDataAdapter(SqlCommand 对象名)”这样的重载形式。 (2)InsertCommand:用于设置向数据库中插入新记录的SQL语句或者存储过程。 (3)DeleteCommand:用于设置向数据库中删除记录的SQL语句或者存储过程。 (4)UpdateCommand:用于设置更新数据源中记录的SQL语句或者存储过程。 我们可以看出,这个对象的属性就是对应着数据库的几个基本操作:增加、删除、修改和查询。 DataAdapter对象的几个常用方法: (1)Fill方法:Fill表示填充的意思,Fill方法用于向DataSet对象中填充从数据源中读取的数据,用Fill方法时,我们一般用以下的格式: DataAdapter 对象名.Fill(DataSet 对象名,"数据表名") 在上述程序代码段中,我们可以发现这条语句:adapter.Fill(ObjectdsDataSet),这就调用了Fill方法。

四、DataSet对象

代码段中还有一个对象:DataSet 这个对象很重要。 DataSet对象有几个基本属性: (1)Tables:DataSet对象有一个重要的属性,那就是Tables属性。Tables属性是一个DataTable对象集合,每个DataTable对象代表数据库中的一个表。如果想表示某一个特定表时,我们用这样的方法: 数据集名.Tables(索引值) 索引值从0开始。 (2)Relations:和Table一样,Relations表示的是一个DataRelation对象集,每个DataRelation对象表达了数据表之间的关系。 DataSet对象有5个常用的方法: (1)HasChanges:这个方法用于判断DataSet对象中的数据是否有变化,有变化返回True,没变化返回False。 (2)GetChanges:这个方法用于获得DataSet中所有变动的数据。 (3)AcceptChanges:这个方法用于提交自加载DataSet或者上次调用AcceptChanges以来,对DataSet进行的所有更改。提交后方法返回空值。 (4)Clear:这个方法用于清除DataSet中所有数据。 (5)Copy:这个方法用于复制DataSet的结构和数据。值得注意的是,这里面可以复制的还有数据的结构。 总结一下,ADO.NET连接数据库的方法要比传统的ADO方便很多,代码量也得到了一定程度的减少,ADO.NET对于开发人员来说使用更为顺手,能更加方便快捷的开发出质量较高的应用程序。 本文所用的数据库为ACCESS数据库,Visual Busic.NET中的ADO.NET也可以连接其他数据库,连接的ConnectionString不同,大家可以查阅资料完成相应的数据库开发。 才疏学浅,如有纰漏,敬请指正!
LICENSED UNDER CC BY-NC-SA 4.0
Comment