既然软件由 程序,数据 和文档组成,那么系统自然少不了数据库的使用。
今天,我就给大家分享一下,我在这次实践中关于数据库基本功能——增删改查的理解和实现 。
站在巨人的肩膀上是我们一贯的作风,那么关于vb和数据库,有哪些巨人等着我们来踩呢? 下面我来为大家介绍三个大巨人 、四个小巨人。他们是
一、大巨人 (独立对象)
1. connection
这次的系统中,主要用到了它的这两个方法。
connection.open connectionstring
connetion.execute sql
open 打开数据连接字符串(关于如何获取字符串connectionstring,因为之前写过这个,就不再写了。感兴趣的读者可以链接过去看看。详细介绍了关于四种数据源字符串连接的获取方式)
execute 执行 sql语句(这个没什么注意的)
2.command
这次敲系统没怎么用上,就不多说了
3.recordset
recordset.addnew '增加新记录
recordset.update
recordset.recordcount '统计记录数,在这次系统中我用这个属性来判断信息是否输入正确。例如:
if recordset.recordcount= 0 then
msgbox "信息有误,请进行核对!"
else
txtNumber.text=recordset.fields(0)
end if
a、update 方法用来干什么?
答:更新记录,经常有同学在程序的末尾忘记加这句话,然后就会发现,语句都执行了呀! 为什么数据库中的数据没有变化? 原因就在这里。它还没有同步更新。
b、recordcount =0 的时候, eof 和bof 自然也都是 true 。因为没有记录,所以它既在第一条记录前,又在最后一条记录后。
c、 注意: 如果使用fields 属性的话,一定要清楚它是从0 开始的。 不过在这次系统开发中, 因为是以快速原型法进行开发、 数据库经常改动,我就没有怎么使用fields属性。 因为字段的位置(*)会变。 如果大家遇到和我类似的情况、推荐使用 recordset!字段名 这样的表达方式来提取数据库中的数据。
二、小巨人 依赖对象
1.field
2.parameter
3.error
4.property
本次开发的过程中只用到了 依赖对象errror 示例如下:
MsgString ="查询错误:"& err.description
会对报错原因进行描述,通过查看description 属性就能知道哪里出现了问题。
因为整个系统用的最多的就是增删改查操作,所以将它写到了模块中。如下:
public function ConnectionString() as string
ConnectionString = "FileDSN=mycharge.dsn;UID=sa;PWD=111111"
end function
Public Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset '从数据库中检索数据
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim stokens() As String '生命一个变量来记录截断后的字符串
On Error GoTo ExecuteSql_Error
Connection
stokens = Split(sql) 'split 函数截断字符串
Set cnn = New ADODB.Connection
cnn.Open ConnectionString
If InStr("insert,delete,update", UCase$(stokens(0))) Then '判断是否是插入,删除,更新语句 如果是,直接执行;不然就声明一个记录集,存储查询到的记录。
cnn.Execute sql
MsgString = stokens(0) & "query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End If
ExecuteSql_Exit: ' 释放对象
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSql_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSql_Exit
End Function
调用的时候,如下所示:
dim txtsql as string ' 记录sql语句
dim msgtext as string ' 记录执行信息
增加记录:
txtsql = "insert * from 表名称"
删除记录:
txtsql= "delete * from 表名称 where 列名称 = 值 " ' 值如果是变量的话要'"& 变量名 & "'
更改记录:
txtsql= "UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值"
查找记录
txtsql ="select * from 表名称 where 列名称 =值"
Executesql txtsql,msgtext ' 执行
如果是select语句的话
set mrc= executesql(txtsql,msgtext)
这就是这次系统中对于vb中增删改查的收获。