视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据库的建立与链接问题
2020-11-09 09:10:16 责编:小采
文档


做完学生管理系统,经过师傅的验收,发现对最初的概念了解相当不深刻!又反过头对5实例简单看了一下,老师常说,学习最重要的是反复,通过这次观看,重新对基本概念有所了解。

首先看几个专业名词:ADO---activex data object动态数据对象通过OLE DB(object linking and embed中文:对象连接与嵌入,是底端程序接口)实现对不同数据的访问。

当时师傅问我关于ADO的对象时,一下子懵了,原来我们在建立数据库定义的connection,recordset等都是ado 的对象,它共有7个对象,在这次的学生信息管理系统中最常见的就是上面那俩,3个对象:recordset,connection,command!还有4个附属对象:field,parameter,property,error

OLE DB由3个部分组成:数据提供者,数据消费者,服务组件。数据提供者是类似于SQL Serser,ODBC提供数据的程序,VB创建的程序就是一种典型的数据消费者,它是利用数据提供者提供的数据创建的数据应用程序。服务组件负责连接数据提供者与数据消费者。

五实例当中应用了vb外界程序的可视化管理器建立的micrsoft access数据库(其文件后缀名为.mdb),而学生信息管理系统的数据库是利用SQL Sever创建的(后缀名为.sql),数据库类的应用程序第一步是建立数据库!第二步,建立ADO引用,在vb程序里直接点击工程下的引用选择microsoft activex data objects 2.6 library即可!第三步,用代码建立连接。下面让我们看一下数据库的不同连接方式对比:

1.直接连接access数据库

dim Objcn as new connection,objRs as new recordset
objcn.connectionstring="Prvider=Microsoft.jet.OLEDB.3.5.1;" & _
"data sourse=数据远文件路径" '连接数据提供者与数据源
objcn.open
 strSQL=“select ……from …… where……”
set objrs.activeconnection=objcn '将数据库记录集与数据源相匹配
objrs.open(strSQL) '记录集打开
 . ‘进行数据库的增删改查操作
objcn.close ‘关闭数据库
set objrs=Nothing
set objcn=Nothing

2. 利用ODBC连接access数据库,ODBC有3种数据源连接方式,分别为用户DNS,系统DNS,文件DNS,学生信息管理系统利用的正是文件DNS的添加。

set objcn=new connection
objcn.open="dsn=数据库文件名"
set objrs=new recordset
 .
objcn.close
set objrs=nothing
set objcn=nothing

3.利用ado data控件创建数据库连接,这种方法相对简单,只要从控件属性里面进行连接即可。

看完了5实例的连接方法,解析一下对学生管理系统连接于登陆时的代码:

1.在登陆窗体中,为走向专业化,往往数据库的登录名设置为系统用户名,所以在登陆窗体的用户名部分自动获得系统用户,在开头部分调用API函数:

Private Declare Function GetUsername Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

窗体加载部分获得系统用户名:

Private Sub Form_Load()
 Dim sbuffer As String
 Dim lsize As Long
 
 sbuffer = Space$(255) '因无法确定系统用户名的长度,先开辟一个255(最大值)空格字符控件
 lsize = Len(sbuffer) 'lsize盛放sbuffer字符串的真是长度
 Call GetUsername(sbuffer, lsize) 
 'api中字符串作函数,需要提前确定大小
 
 If lsize > 0 Then
 txtusername.Text = Left$(sbuffer, lsize)
 Else
 txtusername.Text = vbNullString
 '没有字符串
 End If
 
 ok = False
 micount = 0 ’用于登陆次数的标记
 End Sub

2.在确认按钮中建立连接:

Private Sub cmdOK_Click()
 Dim txtSQL As String
 Dim mrc As ADODB.Recordset '用于保存数据源记录集
 Dim MsgText As String
 
 UserName = "" '先将登录名滞空
 If Trim(txtusername.Text = "") Then '确认用户名输入框不为空
 MsgBox "没有这个用户,请重新输入用户", vbOKOnly + vbExclamation, "警告"
 txtusername.SetFocus
 Else
 txtSQL = "select * from user_info where user_id ='" & txtusername.Text & "'"
 Set mrc = ExecuteSQL(txtSQL, MsgText) '
 调用模块当中的executesql函数
建立数据库连接
 If mrc.EOF Then
 MsgBox "没有这个用
户,请重新输入用户", vbOKOnly + vbExclamation, "警告"
 txtusername.SetFocus
 Else '确认密码
 If Trim(mrc.Fields(1)) = Trim(txtpassword.Text) Then
 ok = True
 mrc.Close
 Me.Hide
 UserName = Trim(txtusername.Text)
 frmmain.Show
 Else
 MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
 txtpassword.SetFocus
 txtpassword.Text = ""
 End If
 End If
 End If
 
 micount = micount + 1 '值允许3次输入
 If micount = 3 Then
 Me.Hide
 End If
 Exit Sub
 
End Sub

3.理解一下执行函数excutesql函数的连接方式。

Public Function ConnectString() As String
 ConnectString = "FileDSN=student.dsn;UID=sa;PWD=123" '文件源,登录名,验证密码
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
 
 sTokens = Split(SQL) '该函数定义将sql语句中的词以空格为分解符分解开放进一个数组里
 Set cnn = New ADODB.Connection '实体化,连接数据源
 cnn.Open ConnectString '打开数据源
 
 If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '比较确定sql数据开始单词是否为增,删,改
 cnn.Execute SQL '执行SQL语句
 MsgString = sTokens(0) & " query successful"
 '虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同
 Else
 Set rst = New ADODB.Recordset '实例化记录集
 rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic '打开要执行的内容sql,连接数据源,游标类型:键集游标,窗口值固定大小
 '得到临时表,游标指向第一条记录
 'get RecordCount,
 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

总结来说,建立连接分三步走战略:打开--执行(增删改查)--关闭

下载本文
显示全文
专题