《2022年vb操作数据库 .pdf》由会员分享,可在线阅读,更多相关《2022年vb操作数据库 .pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VB操作数据库2010-12-01 12:58 首先有一点要注意,数据库的使用与我们以往所使用的文本文件不同.例如我们使用文本文件,来记录各种有用的数据.那么大致有以下几步:读取文件 -格式化数据 -关闭文件 -使用数据如果数据量较大,需要进行筛选,且存放数据的源文件可能不定时变更,那么我们可以用一个临时文件来存放有用的数据,这样可大大提高程序的效率.要 格式化数据 时,我们首先要进行筛选,然后还得进行分类,这样文件中的字符串才能被转换成有用的信息来供程序使用.这样一来,不用说,处理速度将大大减慢,而且就算你设计的数据格式比较科学,当数据量非常大时,文件的容量也会变的让普通计算机无法承受.相对
2、文本文件来说数据库的使用也大致分为以下几步:打开数据库 -查找数据 -使用数据 -关闭数据库从中可以看出,里面少了一步格式化数据,因为数据库本身在存储数据时,它就是按照一定的格式来进行存储的.其次是,数据库与文本文件返回数据的方法不同.如果把文本文件比作一个Textbox 的话,那么数据库更像是一个ListBox.使用文本文件时我们需要从整个Textbox 中取出有用的信息,并进行处理,而 Listbox则可以根据需要返回特定的某一项.由于 VB本身并不带有可以访问数据库的类,所以我们需要引用一个包含能访问数据库的类来使用数据库.这里我们采用ADODB,相比 DAO 和能访问数据库的API 来
3、说,它比 DAO更灵活,更强大;而比起 API,它更简单易用,更适合初学者.而 Access 数据库比起SQL,也相对简单了很多,且能够满足中小型应用程序的需要,所以我们在使用数据库时,选择了 Access.就像使用文本文件来存储数据一样,我们需要先设计好数据结构,只不过在设计Access 数据名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 10 页 -库的结构时,我们需要用到其它的程序来进行详细的规划.建议采用的程序是office中的Access 或 VB自带的 VISDATA.当数据库设计好了以后,我们可以开始 数据库编程 了.首先,我们需要引用ADO.具体的方法是,在 工程
4、 -引用 中,找到 Microsoft ActiveX Data Object*.*Library,这里的*.*是指的时ADO的版本号,一般来说,应用程序或ActiveX控件都具有向下兼容性,所以我们尽可能选择比较新的版本.以确保程序在能识别旧版本 Access 的同时,也能识别较新版本的Access.然后我们需要在程序中创建一个对象.就好比我们在窗体上添加一个FileBox才能看到文件名一样,只有创建了ADO对象,我们才能够访问数据库.常用的对象有两个,Connection和Recordset.创建这两个对象的具体方法是:1.在引用后,使用 New关键字,如Private Conn As N
5、ew ADODB.Connection Private Reco As New ADODB.Recordset 2.在没引用时,用 CreateObject创建对象:Dim Conn,Reco Set Conn=CreateObject(ADODB.Connection)Set Reco=CreateObject(ADODB.Recordset)创建了对象之后,下一步我们要做的就是打开数据库了.先看下面的代码,可以成功的打开数据库.Conn.open Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:Main.mdb 这句代码打开了D盘中的 Main
6、.mdb 这个数据库.名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 10 页 -Connection.Open方法的第一个参数是连接代码,它将传递给系统的数据库引擎.前半部分Provider=Microsoft.Jet.OLEDB.4.0,它表示了数据库的类型.不同的数据库可能会不同.后半句 Source=d:main.mdb它表示了数据库所在的绝对路径.打开数据库之后,还要打开表.假如数据库中有一个表,表名为 Users,字段有两个,一个为用户名,一个为密码.那么看以下代码.1.想返回 Users 中,用户名 为 去年烟花 的 密码 Recordset.open Select
7、 密码 From Users Where 用户名=去年烟花,Connection,1,1 之后我们就可以把用户输入的密码进行比较,看是否允许登录.If Recordset.eof and Recordset.bof then Msgbox 用户不存在!,16 Else If PassWord=Recordset(密码).value then msgbox 登录成功!,64 Else msgbox 密码错误!,32 End If End If Recordset.Close 2.假设 Admin 已经成功登录系统,我们想把所有的用户名和密码都显示出来Recordset.open Select*F
8、rom Users,Connection,1,1 这时,表已经被打开,我们就用以下代码把它显示出来.名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 10 页 -Do whlie Not Recordset.eof Print 用户名:&Recordset(用户名).value&密码:&Recordset(密码).value Recordset.MoveNext Loop Recordset.Close 由以上代码示例可以看出,打开表时,可以只打开其中的一个字段,也可以打开所有.第一个参数是 SQL语句.Select 字段名 From 表名 Where 条件 这里的条件可以省略.且
9、字段名也可以用*来代替所有字段.需要注意的是,如果你用(1)中的方法打开,那么(2)后面显示的代码就不能再用在(1)中.因为(1)里并没有打开 用户名 字段,所以这一句Recordset(密码)就没有值存在,还有可能出错.后面的条件,可以用=、32.(这里假设为数字型.)这是打开的部分.第二个很重要的部分就是查询记录.数据库它并不是把所有记录全部放到一个变量中备用的.而是以 当前记录 的形式来返回一个值.所以我们想从中找到有用的信息,就必须要对信息进行定位/筛选.定位:移动到下一条 Recordset.MoveNext 移动到上一条 Recordset.MovePrevious 移动到最后一条
10、 Recordset.MoveLast 移动到第一条 Recordset.MoveFrist 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 10 页 -移动到某一条 Recordset.Move Number 筛选:Recordset.Find 条件 如:用方法(2)打开表之后 Private Sub Command1_Click()Recordset.Find 用户名=&text1.text If Recordset.Eof True Then Msgbox 该用户的密码是:&Recordset(密码).value,64 Else Msgbox 未找到该用户的资料!,16 E
11、nd If End Sub MoveNext 只有当 Eof 不为 True 时,才可用,否则发生错误.而 MovePrevious 刚是 Bof 不为True 时.而只要 Eof 和 Bof 中有一个不为真时,也就是说只要有一条记录时,它就可以使用.Find 方法中的条件和Open时的第一个参数中的条件表述方法是完全一致的.当在已打开的记录集中,找不到该记录时,Eof 为 True.找到则当前的值就是符合条件的记录.第三个部分就是添加/修改记录.修改记录很简单,先按以上的方法找到相关记录之后,给记录赋值就可以了.比如:(修改密码)按方法(1)打开表之后 名师资料总结-精品资料欢迎下载-名师精
12、心整理-第 5 页,共 10 页 -Recordset(密码).value=123456 Recordset.Updata 需要注意的就是,在修改完成后,要调用 Updata 方法,这样修改才能生效.而添加记录则可以用以下代码来实现:Recordset.addnew Recordset(用户名).value=Admin Recordset(密码).value=Admin Recordset.Updata 这里,先要调用Addnew方法,增加一条新记录,然后对这个新记录中的各字段赋值,最后再调用 Updata 方法.到这里就差不多了,最后说一下上面提到的几个方法.Recordset.Open S
13、QL语句,数据源,游标类型,打开方法SQL语句不用说了,就是 Select那啥的,目的就是按要求从表中返回数据数据源就是一个打开之后的Connection对象.去他妈的游标类型,填 1 就可以了 偷笑 ing 打开方法对应了几个常数,具体哪几个可以从对象浏览器里看.对应数值的意义:1 只读 2 独占 3 可写 4 自已可写,别人可读Connection.open 连接代码,服务器用户名,密码这里的连接代码就不在多说了,服务器用户名,密码只有在连接远程数据库时才用到.VB如何连接access 数据库名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 10 页 -2009 年 07 月
14、25 日 星期六下午 07:07 VB如何连接access 数据库?最近在学习VB,正在研究当中!今天告诉大家VB连接数据库的方法,我知道的有两种:一种是在 adodc1 的属性里设置数据库文件的路径,这种方法的优点是简单易操作,缺点是,当源文件换了地方后,要重新设置数据库的路径,否则连接不上数据库了。一种是用代码设置数据库的路径,这种方法的优点就是只要源文件和数据库在同一文件夹下,无论移动到哪里都能连接上。如果没有建立好数据库的话,先建立一个数据库,然后建立一个表比如我们建的表名为message,然后把里面的字段名称和数据类型都按自己的需要设置好.然后保存就可以了.打开 Microsoft
15、Visual Basic6.0 我用的是VB6.0,在需要调用数据库的窗体上加入一个adodc 控件,默认名称为:Adodc1.默认的情况下工具栏里是没有这个控件的,可以打开工程-部件(快捷键 CTRL+T),去掉只显示选定项的勾,然后勾上Microsoft ADO Data Control(OLEDB),然后确定,工具栏就会多了一个adodc 的控件。第一种方法,设置adodc1 的属以连接数据库.在 adodc1 控件上右键-Adodc 属性-使用连接字符串-生成-Microsoft Jet 4.0 OLE DB Provider-下一步-选择或输入数据库名称-找到要连接的数据库后,确定.
16、然后记录源设置属性.如果要把内容提交到数据库一般使用 adCmdTable.表选择要连接的表。设置完毕后就可以了.如果我们想把内容提交到数据库.举个例子.在窗体建立一个文本框,设置属性中的DataSource 为 adodc1 DataField为要连接的数据库的字段名。如果数据库中有字段,会让你选择。设置好后在窗体加一个添加记录和一个提交的按钮,设置代码:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 10 页 -Private Sub Command1_Click()Adodc1.Recordset.Update 保存Adodc1.Refresh 刷新End Sub 添加按钮
17、代码:Private Sub Command2_Click()Adodc1.Recordset.AddNew 添加新纪录Adodc1.Recordset(姓名).Value=Text1.Text End Sub 第二种方法:在窗体添加Adodc 控件一个 text控件一个添加记录按钮一个提交按钮在窗体设置代码:Private Sub Form_Load()Adodc1.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+App.Path+db1.mdb;Persist Security Info=False 设置数据库路
18、径Adodc1.CommandType=adCmdText 设置记录源Adodc1.RecordSource=select*from message 连接数据库的message 表文件Set Text1.DataSource=Adodc1 text1.DataField=姓名 End Sub 添加记录按钮代码:Private Sub Command1_Click()名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 10 页 -Adodc1.Recordset.AddNew 添加新纪录End Sub 提交代码:Private Sub Command2_Click()Adodc1.Re
19、cordset.Update 保存Adodc1.Refresh 刷新End Sub 好了连接方法讲完了,我都在机子上测试过了,因该没有什么问题的。如果有问题请多看几遍,或看些别人写的程序代码,会有很大进步的,我的 VB也不好,因为不是计算机专业的,老师也没有教很多,高手莫笑。好了我再给大家几个查询数据库常用的代码:首记录按钮的代码:Private Sub sjl_Click()Adodc1.Recordset.MoveFirst End Sub 上一条记录按钮代码:Private Sub up_Click()Adodc1.Recordset.MovePrevious If Adodc1.Rec
20、ordset.BOF Then Adodc1.Recordset.MoveFirst End If End Sub 下一条记录代码:名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 10 页 -Private Sub down_Click()Adodc1.Recordset.MoveNext If Adodc1.Recordset.EOF Then Adodc1.Recordset.MoveLast End If End Sub 末记录代码:Private Sub mjl_Click()Adodc1.Recordset.MoveLast End Sub 删除记录代码:Private Sub Command3_Click()Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext If(Adodc1.Recordset.BOF Or Adodc1.Recordset.EOF)Then MsgBox 已经无纪录,提示 End If End Sub 名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 10 页 -