使用ADO编程模型需添加ADO对象类库的“引用”----“Microsoft ActiveX Data Objects 2.x Library”
ADO之VB数据库操作主要包括读、写、修改及删除等操作,不论是进行什么数据库操作都必须首先连接到数据库。
一、连接到数据库
1、连接到SQL数据库:
通过ADO的Connection对象可实现VB与SQL数据库的连接。一般方法如下:
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.ConnectionString = "Provider=SQLOLEDB.1;Password=密码;User ID=用户名;Initial Catalog=SQL数据库文件;Data Source= localhost;" '指定提供者,设置数据源
cnn.Open …打开到数据库的连接
……..
cnn.Close …关闭到数据库的连接
或者:
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=SQLOLEDB.1;Password=密码;User ID=用户名;Initial Catalog=SQL数据库文件;Data Source= localhost;" …打开到数据库的连接
……..
cnn.Close …关闭到数据库的连接
2、连接到ACCESS数据库:
通过ADO的Connection对象可实现VB与ACCESS数据库的连接。一般方法如下:
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文件.MDB" '指定提供者,设置数据源
cnn.Open …打开到数据库的连接
……..
cnn.Close …关闭到数据库的连接
或者:
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
……..
cnn.Close …关闭到数据库的连接
二、读数据库操作
读数据库操作一般可通过recordset对象实现。方法如下—以ACCESS数据库为例:
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
Dim rs As New Recordset '声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型] …也可先设置记录集相关属性
text1.text= rs("字段名称1或索引") …假设读取出来的字段信息显示在文本框中,三种读取方法等价
text2.text=rs.fields("字段名称2或索引")
text3.text= rs!字段名称3
…….
rs.close …关闭记录集对象
cnn.Close …关闭与数据库的连接
set rs=Nothing …释放rs对象实例
set cnn=Nothing …释放Connection对象实例
l 记录源一般为一条SQL查询语句,以实现查询目的。
l Recordset对象还保持查询返回的记录的位置,它返回第一个检索到的记录,并允许你一次一项逐步扫描其他结果。Recordset对象的部分属性及方法如下
Rs(i):读取第i个字段的数据,i从0开始
Rs(字段名):读取指定字段的数据
Rs.EOF:记录指针指到记录的尾部
Rs.BOF:记录指针指到记录的头部
Rs.RecordCount:游标中的数据记录总数
Rs.PageSize:当对象设有分页时,用于指定逻辑页中的记录个数
Rs.PageCount:返回记录集中的逻辑分页数
Rs.MoveNext:将记录指针移到下一个记录
Rs.MovePrev:将记录指针移到上一个记录
Rs.MoveFirst:将记录指针移到第一个记录
Rs.MoveLast:将记录指针移到最后一个记录
rs.Delete:将当前记录删除
rs.addnew:添加一条新记录(行)
l 如果要读取满足条件的数据库记录,只要在SELECT语句中增加WHERE子句即可(例如:WHERE 性别=”男”),如果要读取多条满足条件的数据库记录,可通过循环语句来实现,并且每读取一条记录后使用Rs.MoveNext移动记录指针以读取下一条记录。
三、写数据库操作
方法1:使用recordset对象(此方法一般初学者使用较多)。方法如下—以ACCESS数据库为例:
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
Dim rs As New Recordset '声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型] …也可先设置记录集相关属性
rs.addnew …告诉rs我们要添加一行
rs("字段名称1或索引") =值1 …给要添加的行的一个字段赋值,三种方法等价
rs.fields("字段名称2或索引") =值2
rs!字段名称3 =值3
…….
rs.update …通知rs我们要把这个行写入数据库
rs.close …关闭记录集对象
cnn.Close …关闭与数据库的连接
set rs=Nothing …释放rs对象实例
set cnn=Nothing …释放Connection对象实例
l addnew使用方法后,如果要放弃添加的结果,应调用记录集的CancelUpdate方法放弃。
方法2:使用Connection对象的Execute方法对表进行SQL记录插入操作(要求要熟悉SQL 命令)
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
strSQL = "Insert Into 数据表(字段1, 字段2…..) Values(值1, 值2…..)…拼写Insert插入语句
cnn.Execute strSQL '执行Insert语句实现添加
…….
cnn.Close …关闭与数据库的连接
set cnn=Nothing …释放Connection对象实例
四、修改数据库操作
方法1:使用recordset对象(此方法一般初学者使用较多)。方法如下—以ACCESS数据库为例:
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
Dim rs As New Recordset '声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型] …也可先设置记录集相关属性
…….
rs("字段名称1或索引") =新值1 ……给要修改的行的一个字段赋一个新值,三种方法等价rs.fields("字段名称2或索引") =新值2
rs!字段名称3 =新值3
…….
rs.update …通知rs,我们要把修改好的记录行写入数据库
rs.close …关闭记录集对象
cnn.Close …关闭与数据库的连接
set rs=Nothing …释放rs对象实例
set cnn=Nothing …释放Connection对象实例
l 如果放弃修改结果,应调用记录集的CancelUpdate方法放弃更新数据库。
方法2:使用Connection对象的Execute方法对表进行SQL记录更新操作(要求要熟悉SQL 命令)
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
strSQL = "Update 数据表Set 字段1=新值1, 字段2=新值2….. …拼写Update语句,以便进行修改
cnn.Execute strSQL '执行Insert语句实现添加
…….
cnn.Close …关闭与数据库的连接
set cnn=Nothing …释放Connection对象实例
五、删除数据库操作
方法1:使用recordset对象(此方法一般初学者使用较多)。方法如下—以ACCESS数据库为例方法1:通过
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
Dim rs As New Recordset '声明一个记录集对象
rs.Open [记录源, cnn, 游标类型, 锁定类型, 命令类型] …也可先设置记录集相关属性
…….
rs.Delete …删除当前记录
…….
rs.update …通知rs,我们要把修改好的记录行写入数据库
rs.close …关闭记录集对象
cnn.Close …关闭与数据库的连接
set rs=Nothing …释放rs对象实例
set cnn=Nothing …释放Connection对象实例
l 删除数据库记录前应先找到(查询)待删除的记录项(通过rs.Open来实现)。
方法2:使用Connection对象的Execute方法(要求使用者要熟悉SQL命令)
例如:如果要将数据库“成绩.mdb”中的名字为“学生情况表”的数据表中,学号为'07001'的记录删除,可通过下列方法来实现。
Dim cnn As New ADODB.Connection …创建Connection对象cnn,关键字new用于创建新对象
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ACCESS数据库文
件.MDB" …打开到数据库的连接
sql="delete from学生情况表where 学号='07001'" …拼写delete语句,以便进行删除
cnn.Execute strSQL '执行elete语句实现删除
…….
cnn.Close …关闭与数据库的连接
set cnn=Nothing …释放Connection对象实例
附:分页简介---使用记录集
一、.原理:
分页其实是将数据库中的记录分割成若干段,并将各段记录放在同一个“逻辑页面”上“分屏显示”出来,其实显示的“逻辑页面”只有1页,只是每次显示的页面记录不同罢了。通过控制各页中数据库显示记录的不同,来刷新页面的显示内容。
二、用到的几个记录集属性
rs.pagesize:定义一页显示记录的条数;
rs.recordcount:统计数据库记录总数;
rs.pagecount:统计总页数;
rs.absolutepage:将数据库指针移动到当前页要显示的数据记录的第一条记录;比如有20条记录的一个数据库,我们分为一页显示5条记录,如将AbsolutePage属性设为2,则当前记录指针移至第2页第1条记录,也即将指针移动到第6条记录处,依次类推.... (AbsolutePage 属性是以1 为起始的)