图书管理系统 第5页
3.4 利用DATA控件访问数据库
该软件是利用ACCESS数据库,操作方便,简单。在ACCESS数据库中不需要创建数据连接,因为它是VB中默认的数据库形式。
以归纳为以下几步:
1.创建数据库源名(DATABASE)
2.创建数据对象
3.操作数据库
4.关闭数据对象和链接
每一步的作法如下:
一、 创建数据源名
先进行定义:DIM DB AS DATABASE
Set db = OpenDatabase("e:\图书馆管理系统\sjhdb.mdb")
也可以直接在DATA控件的属性中的DATABASENAME直接进行连接。
二、创建数据对象(Record Set)
ADO中的数据对象通常保存的是查询结果。Record Set是ADO中最复杂的对象,有许多属性和方法。Record Set保存的是一行行的记录,并标有一个当前记录。以下是创建方法:
可以直接利用DATA控件直接绑定,在DATA控件的属性中的RECORDSOURCE对数据表进行连接。
Set Record Set=DB.Openrecordset(sqtStr)
这条语句创建并打开了对象Record Set,其中db是先前创建的链接对象,sqtStr是一个字串,代表一条标准的SQL语句。例如:
sqlStr=“SELECT * FROM tab
Set Record Set=DB.Openrecordset(sqtStr)
这条语句执行后,对象Record Set中就保存了表tab1中的所有记录。
三、操作数据库
我们通过调用链接对象的openrecordset方法来将查询结果返回给一个数据对象或进行插入、删除等操作。例如:
修改:
sql1 = "select * from 图书总表 where 条形码号='" & Text3(3).Text & "'"
If sql1 <> "" Then
Set rec = db.OpenRecordset(sql1)
rec.Edit
rec.Fields(8).Value = CDate(DTPicker3.Value)
rec.Fields(5).Value = CBool(a)
rec.Fields(6).Value = Text3(8).Text
rec.Update
rec.Close
End If
删除:
Data2.Recordset.MoveFirst
Data2.Recordset.Move MSFlexGrid2.RowSel - 1
Dim s As Integer
s = MsgBox("确定删除这组记录吗?删除后将不能恢复数据!", vbYesNo + vbQuestion, "删除确定")
If s = 6 Then
Data2.Recordset.Delete
Data2.Refresh
Data2.Recordset.MoveNext
增加:
Set rs = db.OpenRecordset("借书流水表")
rs.AddNew
a = False
rs.Fields(0).Value = Trim(Text1(0).Text)
rs.Fields(1).Value = Trim(Text1(1).Text)
rs.Update
rs.Close
四、关闭数据对象和链接对象
在使用了ADO对象之后要关闭它,因为它使用了一定的服务器资源。通过调用方法close实现关闭,然后再释放它。
Record Set.close
Set Record Set=Nothing
/关闭创建的数据对象
mConn.close
Set mConn=Nothing
/关闭创建的链接对象
3.5.显示数据库中的内容
我利用MSFLEGRID控件来显示数据库中的内容,可以直接通过DATA控件来实现操作,也可以利用代码来完成相关的操作。
第一种方法:
设置MSFLGRID控件的属性Datasource属性
第二种方法:
sql = "select * from 借书流水表 where 借书证号='" & Text1(0).Text & "'"
If sql <> "" Then
Set rs = db.OpenRecordset(sql)
End If
If Not (rs.BOF And rs.EOF) Then
Do While Not rs.EOF
MSFlexGrid1.TextMatrix(0, 0) = ""
MSFlexGrid1.TextMatrix(0, 1) = "借书证号"
MSFlexGrid1.TextMatrix(0, 2) = "姓名"
MSFlexGrid1.AddItem vbTab & rs.Fields(0).Value & vbTab & rs.Fields(1).Value & vbTab & rs.Fields(2)
rs.MoveNext
End If
rs.Close/以上是完成查询结果的数据显示
3.6下面举例对SQL语句进行详细说明:
一个访问数据库的程序段,对于不同的用户以及一个用户的不同行为,要其执行的SQL语句是不同的,其不同主要表现在查询、插入或更新时的参数不同,于是我们将SQL语句定义为含变量的字符串(dim sql as string),通过赋予变量不同的值便产生出适合的SQL语句串,再通过数据对象的相应方法来执行它,完成所需的数据操作。这一方法的运用详见下面部分。
第一.对登录界面进行简单介绍(我在这段程序中使用ADODB数据源)
/用SQL语句从数据库中的密码表中取得用户名称和相应的密码
sql = "select * from 密码 where 用户名称='" & txtUserName.Text & "' and 密码= '" & txtPassword.Text & "'"
Set rs = conn.Execute(sql)
/用一个循环语句将密码表中的所有用户名显示在登录界面的用户名称下拉列表框中供用户选择
conn.Open connstr
rs.Open "select 用户名称 from 密码", conn, adOpenStatic, adLockReadOnly
Dim i As String
For t = 0 To Val(rs.RecordCount) - 1
i = Trim(rs.Fields("用户名称").Value)
rs.MoveNext
txtUserName.AddItem i
Next t
rs.Close
第二.对查询界面进行简单介绍
Private Sub Command1_Click()
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页