您好,欢迎访问一九零五行业门户网

数据库的建立与链接问题

做完学生管理系统,经过师傅的验收,发现对最初的概念了解相当不深刻!又反过头对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
总结来说,建立连接分三步走战略:打开--执行(增删改查)--关闭
以上就是数据库的建立与链接问题的内容。
其它类似信息

推荐信息