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