.net中一般使用ado.net来和数据库进行连接,首先来整体看一下其中的数据库中的数据是如何来传递的:Data adapter→dataset→datagrid。其中,data adapter是用来获取数据的,dataset是数据在内存中的副本,datagrid是在应用程序中的表现。
接下来,分别介绍与数据库连接,数据库的查询,使用DataAdapter获取数据,处理DataSet对象。
与数据库的连接:
●通常使用的连接对象是CONNECTION是OleDbConnection,这也是最常使用的连接对象,需要在VB.NET中引用:
Imports System.Data
Imports System.Data.Oledb
Imports System.Data.sqlclient
●创建CONNECTION对象
Dimcn as oledbconnection
cn=newoledbconnection()
连接字符串(告诉connection对象使用什么用户名和密码,连接哪一台计算机上的那个数据库)
连接字符串的形式如:server=WBX-PC;database=charge_sys;uid=sa;pwd=123
开放连接:cn.open()
关闭连接:cn.close()
注意:.net中默认使用连接池来和数据库连接;而且连接池默认是打开的,所以在调用close方法时,与数据库的实际连接并没有真正被关闭,而是被传递到池中,以后它就在池中重用。
●动态的数据库连接
通过给oledbconnection的connectionstring属性赋不同的值来动态连接数据库
●使用command对象:
创建command:
Dim cmd as newoledbcommand
Cmd.connection=cn
Cmd.commandtext+“select*fromstudent”
执行无返回行的查询:
Cmd.executenonquery()
对于update语句来说,有时会修改某些行的值,有时却不会修改任何行,但是不会发生任何异常。Command对象将所影响的行数作为cmd.executenonquery()的返回值
执行一个有返回集的查询:cmd.executereader
返回一个数据集对象:dim rst as oledbdatareader=cmd.executereader()
Rst.read():第一次使用该方法的时候会移动游标到结果集的第一行,以后每次使用时会自动下移一行,如果数据集已经结束此方法会返回false
缺点:必须随时用完随时关闭,否则在视图打开第二个datareader,就会出现异常;datareader会把connection对象锁定;数据是只读的;游标只能向前,不能后退,如果需要在各个查询结果之间前后移动,则应该使用dataset.
执行返回单值的查询:selectcount(*) from student;command有一个专门为此类设计的方法:executescalar,获取第一行第一列的数据。
使用DataAdapter获取数据
Dataadapter是专门用来处理脱机数据的,Dataadapter将查询到的数据放入DATASET中,然后就不需要连接数据库了,实际上DATASET就相当于一个小的数据库,只不过是放在内存中。