1、VB 数据库教程序 vb 数据库操作是初学者普遍感到头疼的地方,因为现有的 vb 教材和资料中的数据库操作这部分,多是泛泛而谈或是一带而过。因此就想组织一个包括添加、修改、删除这些基本功能的数据库操作实例供大家参考。久已未用 vb6,机器里已经装上了 VS 2008,再改回 vb6,感觉实在是怪怪的。还好有朋友帮忙,感谢“小二黑”网友供稿!也许有朋友觉得 vb6 版本已经很低了,做这个事还有意义吗?其实对微软来说,vb5是 vb,vb6 是 vb,VS.net 中的 也是 vb;而对于许多初学者来说,vb 只是 vb6,为什么这么说呢?因为对于许多不了解编程的朋友来说,似乎 vb 就是编程的
2、代名词,学编程的第一反应就是学 vb,而民间的电脑培训学校开设的多数都是 vb6 课程,那么他们学到的都是 vb6;同时计算机等级考试也可以用 vb6 来过级,有相当部分的朋友是为了考证而学编程的,你相信他会放着简单易学的 vb6 不学,而去研究庞大的.NET 吗?因此我觉得这个事还是值得去做的,所以就有了下面这几篇文章。祝朋友们学习愉快!第一部分:vb 数据库操作实例vb 神童教程(续)-编写一个小型的信息管理系统vb 神童教程(续)-准备数据库vb 神童教程(续)-设计系统的界面及对象的属性vb 神童教程(续)-为对象添加事件代码第二部分:补充内容vb 神童教程(续)-ODBC 数据源简介
3、vb 神童教程(续)-配置 Access 数据源vb 神童教程(续)-配置 SQL Server 数据源vb 神童教程(续)-VB 的 ADO 对象vb 神童教程(续)-vb adodb Connection 对象简介vb 神童教程(续)-vb 连接 Access 数据库实例vb 神童教程(续)-使用 ADO Data 控件连接 Access 的简单实例vb 神童教程(续)-编写一个小型的信息管理系统受委托为编程入门网做一个简单的 vb 操作数据库的实例,来演示一下如何用 vb 向数据库中添加、修改、删除记录这些操作。我觉得自己是比较菜的,几年来别人都在进步,只有我还在原地踏步。不过没有办法,
4、我们这一圈人里现在只有我机器上还有 vb6,勉为其难,只有尝试一下了。如果我写的这点幼稚的东西能为想要了解 vb 数据库操作的朋友提供哪怕是一丁点儿的参考和帮助,将是我最为高兴的事情,同时也希望高手不要见笑。我做的这个实例名为“编程入门网网址管理系统” ,算是一个小型的信息管理系统吧。该系统后台使用的是 Access 数据库,程序中使用 ADO 代码链接的形式连接 Access。该系统具有向数据库中添加、修改、删除记录的功能,进行某项操作后能够实时刷新显示数据。并在程序中加了相应的代码对输入的数据进行合法性校验,以避免输入错误的数据造成程序运行不正常,程序运行时各个操作及退出系统时均有友好的提
5、示框请用户确认。所有代码均在 Windows 2003+Vusual Basic 6.0 环境下调试通过。系统运行时如下图:vb 神童教程(续)-准备数据库我用的是 Access 2003,因为需要讲解的仅仅是数据的添加、修改及删除,因此单数据库、单表就够了。如果以后您要编写更复杂一些的信息管理系统而涉及到多表操作,则您还需要补充一些关系数据库方面的知识,比如实体、一对一联系、一对多联系等等;此外,对 sql 语言也需要有所了解。具体您可以参考:数据库基础知识 ABC。首先,在“我的电脑”的 e 盘新建一个名为 vb 文件夹,先打开 Access,新建一个名为Access_db 的数据库(Ac
6、cess 数据库文件的扩展名是.mdb) ,保存到刚才建立的文件夹中,则以后在程序中调用数据源的位置为 E:vbAccess_db.mdb。然后在 Access_db.mdb 中建立一个名为 wzdz 的表(wzdz 是“网站地址”的首字母缩写), 然后在 wzdz 表中添加网站名称、网站地址及网站描述三个字段,三个字段的属性是相同的,如下:数据类型:文本。字段大小:50有效性规则:无。必填字段:否允许空字符串:否索引:无“编号”这个字段使用的是 Access 的自动编号,并将其作为主键。也就是说,您在表中设置以上三个字段即可,设置完毕保存表时,按 Access 的提示添加主键,Access
7、会自动为您搞定。具体操作您可以参考:vb 神童教程(续)-vb 连接 Access 数据库实例这样在建立了数据库及表结构之后,即使是调用没有记录的空库,系统也可以无差错运行,可以在运行时通过“添加记录”按钮向数据库中添加记录。不过由于数据库是空的,系统第一次运行时数据显示控件没有数据可显示,显得空荡荡的,不太美观哦。为了方便起见,我们在 Access 中给 wzdz 表中预先添加两条初始记录:编 网 网站地址 网站描述号 站名称1 编程入门网http:/ 各种编程文档、电脑教程及软件应用技巧,您的电脑技术加油站!2 健康生活网www.health163.org您的健康指南添加的方法很简单:在
8、Access 的设计器中直接双击 wzdz 表名,在出来的窗口中添加即可。添加时注意:因为我们使用的是 Access 的自动编号做主键,所以在添加时不用理“编号”这个字段,直接添加后三个字段即可。下一步的工作,是设计系统的界面及设置各个对象的属性。vb 神童教程(续)-设计系统的界面及对象的属性本系统是一个很简单的数据库操作实例,能够对数据库的添加、修改及删除记录这几个基本的操作。系统使用数据显示控件 MSHFlexGrid 显示数据库中的记录,使用数据链接控件 Adodc 链接数据库作为 MSHFlexGrid 的数据源,使用文本框来接收系统运行时用户输入的数据。步骤如下:一、启动 vb6,
9、新建一个标准 exe 工程,并将工程中的 form1 的 caption 属性设置为“编程入门网网址管理系统” ,width 属性值设为 7950,height 属性值设为 4620。二、向窗体中添加一个 Adodc 控件。如果在工具箱中找不到 Adodc 控件,可以右击工具箱,选择“部件.”菜单项,然后在“部件”窗口的“控件”选项卡中选中“Microsoft ADO Data Control6.0(OLEDB)”。在 VB 的属性窗口我们对 Adodc 控件的三个个属性值进行编辑,其余属性值使用默认的即可:1、ConnectionString 属性值设为: Provider=Microsof
10、t.Jet.OLEDB.4.0;Data Source=E:vbAccess_db.mdb;Persist Security Info=False这个属性设置了连接 Access_db.mdb 这个数据库。2、RecordSourc 属性值设为:select * from wzdz这个属性值中的 sql 语句的作用是查询出 wzdz 表中的所有记录。3、Visible 属性值设为 False,作用是使其在运行时不可见。三、向窗体添加一个 MSHFlexGrid 控件,如果工具箱中没有 MSHFlexGrid 控件,可以右击工具箱,选择“部件.”菜单项,然后在“部件”窗口的“控件”选项卡中选中“
11、Microsoft Hierarchical FlexGrid Control 6.0 ”。然后在 vb 的属性窗口中将 MSHFlexGrid 控件的名称修改为 MS1,如下图:然后对 MSHFlexGrid 控件进行如下设置:1、DataSource 属性:在 vb 的属性窗口中将其值设为 Adodc1,即使用 Adodc 控件作为其数据源。2、BackColorBkg 属性:在 vb 的属性窗口中将其值设为“ Str2 = “Data Source=E:vbAccess_db.mdb;“ Str3 = “Jet OLEDB:Database Password=“conn.Open Str
12、1 “ Str2 = “Data Source=E:vbAccess_db.mdb;“ Str3 = “Jet OLEDB:Database Password=“conn.Open Str1 “ Str2 = “Data Source=E:vbAccess_db.mdb;“ Str3 = “Jet OLEDB:Database Password=“conn.Open Str1 “uid=sa;pwd=password;database=pubs“connection1.ConnectionTimeout=30connection1.Open使用 DSN 和 ODBC 标记打开连接。Set co
13、nnection2=New ADODB.Connectionconnection2.ConnectionString=“DSN=Pubs;UID=sa;PWD=password;“connection2.Open使用 DSN 和 OLE DB 标记打开连接。Set connection3=New ADODB.Connectionconnection3.ConnectionString=“Data Source=Pubs;User ID=sa;Password=password;“connection3.Open使用 DSN 和单个参数而非连接字符串打开连接。Set connection4=Ne
14、w ADODB.Connectionconnection4.Open “Pubs“,“sa“,“pwd“End Sub注意:如果没有复选“引用”对话框中的 Data Access Object,程序会出错。在上面的程序段中,先定义了 4 个 Connection 对象的变量。这 4 个变量分别对应于 4 种不同的连接方式。语句 Set connection1=New ADODB.Connection 是创建一个新的 Connection 对象,然后再调用 Connection 对象的 Open 方法来打开数据库连接。4.ConnectionTimeout 属性ConnectionTimeout
15、 属性设置或返回指示等待连接打开的时间的长整型值(单位为秒) 。其默认值为 15,指示在终止尝试和产生错误前建立连接期间所等待的时间。如果由于网络拥塞或服务器负载过重导致的延迟使得必须放弃连接尝试时,请使用 Connection 对象的ConnectionTimeout 属性。如果打开连接前所经过的时间超过 ConnectionTimeout 属性上设置的时间,将产生错误并且 ADO 将取消该尝试。如果将该属性设置为零,ADO 将无限等待直到连接打开。5.DefaultDatabase 属性DefaultDatabase 属性可设置或返回指定 Connection 对象上默认数据库的名称。例:
16、使用 Connection 对象的 DefaultDababase 属性的示例代码。Public Sub DefaultDatabase_Example()Dim connection1 As ADODB.ConnectionSet connection1=New ADODB.Connectionconnection1.ConnectionString=“driver=SQL Server;“uid=sa;pwd=password“cnn1.Opencnn1.DefaultDatabase=“pubs“End Sub6.IsolationLevel 属性IsolationLevel 属性指出
17、Connection 对象如何处理对象。7.Mode 属性Mode 属性设置或返回以下某个 ConnectModeEnum 的值,指示用于更改在 Connection中的数据的可用权限。AdModeUnknown:默认值。表明权限尚未设置或无法确定。AdModeRead:表明权限为只读。AdModeWrite:表明权限为只写。AdModeReadWrite:表明权限为读 /写。AdModeShareDenyRead:防止其他用户使用读权限打开连接。AdModeShareDenyWrite:防止其他用户使用写权限打开连接。AdModeShareExclusive:防止其他用户打开连接。AdMod
18、eShareDenyNone:防止其他用户使用任何权限打开连接。8.Provider 属性Provider 属性指出当前数据提供者的名字,或者是使用 Open()方法时没有指定名字的情况下所使用的提供者名。但是,调用 Open 方法时如果在多处指定提供者可能会产生无法预料的后果。如果没有指定提供者,该属性将默认为 MSDASQL(Microsoft OLE DB Provider for ODBC)。例:使用 Connection 对象的 Provider 属性的示例代码。Public Sub Provider_Example()Dim connection1 As ADODB.Connect
19、ionSet connection1=New ADODB.Connectionconnection1.Provider=“Microsoft.Jet.OLEDB.3.51“connection1.Open“C:samplesnorthwind.mdb“,“admin“,“End Sub9.State 属性State 属性对所有可应用对象都可用,它用来说明其对象状态是打开或关闭的。可以随时使用 State 属性来确定指定对象的当前状态。该属性是只读的,并返回下列常量之一的长整型值。AdStateClosed:默认值,指示对象是关闭的。AdStateOpen:指示对象是打开的。AdStateCon
20、necting:指示 Recordset 对象正在连接。AdStateExecuting:指示 Recordset 对象正在执行命令。AdStateFetching:指示 Recordset 对象的行正在被读取。例:使用 Connection 对象的 State 属性的示例代码。Public Sub State_Example()Dim connection1 As ADODB.ConnectionDim statestring AS StringSet connection1=New ADODB.Connectionconnection1.ConnectionString=“DSN=Pubs
21、;UID=sa;PWD=password;“connection1.OpenSelect Case connection1.Statecase adStateClosedstatestring=“adStateClosed“case adStateOpenstatestring=“adStateOpen“End Select显示连接的状态。MsgBox “connection1.State:“,statestringEnd SubConnection 对象的方法Connection 对象的方法用来管理事务、执行命令、打开和关闭连接。需注意的是,ADO 对象所支持的方法是独立于当前所使用的数据源
22、的。例如一个 OLE DB 数据源不必支持 OLE DB 规范的全部功能。1.BeginTrans 方法BeginTrans 方法开始一个连接到数据源的新事务,即启动一个新的事务。与之相应的还有 CommitTrans 和 RollbackTrans 方法。CommitTrans 保存所有的更改并结束当前事务,它也可以用来启动一个新的事务。RollbackTrans 取消当前事务中所做的任何更改并结束事务,同 CommitTrans 类似,它也可以用来启动一个新的事务。它们的语法为:Object.BeginTransObject.CommitTransObject.RollbackTrans需
23、注意,并非所有提供者都支持事务。需验证提供者定义的属性 Transaction DDL 是否出现在 Connection 对象的 Properties 集合中,如果在则表示提供者支持事务。如果提供者不支持事务,调用其中的某个方法将返回错误。一旦调用了 BeginTrans 方法,在调用CommitTrans 或 RollbackTrans 结束事务之前提供者将不再立即提交所做的任何更改。例:使用 Connection 对象的 BeginTrans、CommitTrans 和 RollbackTrans 方法的示例代码。Public Sub BegiTrans_Example()Dim cnn1
24、 As ADODB.ConnectionDim rstTitles As ADODB.RecordsetDim strCnn As StringDim strTitle As StringDim strMessage As String打开连接。strCnn=“Provider=sqloledb;Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=;“Set cnn1=New ADODB.Connectioncnn1.Open strCnn打开 Titles 表Set rstTitles=New ADODB.Recordsetrst
25、Titles.CursorType=adOpenDynamicrstTitles.LockType=adLockPessimisticrstTitles.Open “titles“,cnn1,adCmdTablerstTitles.MoveFirstcnn1.BeginTrans在记录集中循环并询问是否想要更改指定标题的类型.Do Until rstTitles.EOFIf Trim(rstTitles!Type)=“psychology“ ThenstrTitle=rstTitles!TitlestrMessage=“Title:“Data Source=srv;Initial catalo
26、g=pubs;User ID=sa;Password=:“cnn1.Open strCnnSet rstSchema=cnn1.OpenSchema(adSchemaTables)Do Until rstSchema.EOFDebug.Print “Table name:“UID=;PSW=“cnn.Open connect_stringSelect Case cnn.StateCase adStateClosestatestring=“adStateClosed“Case adStateOpenstatestring=“adStateOpen“End Select显示连接的状态MsgBox
27、“连接成功! “,statestring对 wzdz 表进行查询操作my_recordset.Open “Select * from wzdz“,cnnmy_recordset.CloseEnd Sub 本段连接数据库的代码是写在窗体的 Form_Load()子过程中的,对数据库的连接工作是在程序一开始即窗体的加载过程中进行的。在 Form_Load()中,首先定义了一个Connection 对象 cnn 和一个 RecordSet 对象 my_recordset,以及两个字符串类型的变量connect_string 和 statestring,接下来的两个 Set 语句是为了生成一个 Con
28、nection 对象 cnn 和一个 RecordSet 对象 my_recordset。然后是连接 Access 数据库,先把连接字符串“DSN=Access_db;UID=;PSW=“赋给字符串变量 connect_string。连接字符串中的具体各项内容是根据 ODBC 数据源的配置而定的,不同的配置方式和配置内容就会有不同的连接字符串。cnn 的 Open 事件用来执行与数据库的连接工作。为了验证与数据库的连接是否正确,这里我们读取了 cnn 的 State 属性。State 属性可用用来说明其对象状态是打开或关闭的。在使用了 State 属性后,通过系统函数 MsgBox 把与数据库
29、的连接状态显示给用户。如果连接状态是打开的,对话框标题栏的文字是“adStateOpen“,如下图:如果连接状态是关闭,则对话框标题栏显示“adStateClose” 。其后的语句 my_recordset.Open “Select * from wzdz “,cnn 则示范了如何从数据库中查询所需要的数据。注意:在程序中每当用一个 Set 语句来生成一个 Connection 或 RecordSet 对象时,最后使用完毕之后应操作使用 Close 方法对其进行关闭操作。例程调试中可能出现的问题:上述代码运行时可能会显示“用户定义类型未定义“ ,错误定位在 “Dim cnn As ADODB.
30、Connection”这一句上。解决方法:单击“工程”“引用” ,勾选“Microsoft ActiveX Data Object 2.6”,再运行程序即无此问题.vb 神童教程(续)-使用 ADO Data 控件连接 Access 的简单实例ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO)来快速建立数据绑定的控件和数据提供者之间的连接.尽管可以在应用程序中直接使用 ActiveX 数据对象,但 ADO Data 控件有作为一个图形控件的优势(具有“向前”和“向后”按钮) ,以及一个易于使用的界面,使用户可以用最少的代码创建数据库应用程序。数据绑定控件是任何具
31、有“数据源”属性的控件。在 VB 的工具箱中不少控件都可以作为数据绑定的控件,包括复选框、组合框、图像、标签、列表框、图片框及文本框控件等。此外,VB 还包括了若干种数据绑定的ActiveX 控件,例如 DataGrid、DataCombo、Chart 及 DataList 控件等。用户也可以创建自己的数据绑定的 ActiveX 控件,或使用从其他开发商购买的控件。数据提供者可以是任何符合 OLEDB 规范的数据源,使用 VB 的类模块也可以很方便地创建子集的数据提供者。下面的程序示例中,将使用一个 ADO Data 控件及一个 DataGrid 控件,程序执行时如下图:DataGrid 控件
32、显示并允许对 Recordset 对象中代表记录和字段的一系列行和列进行数据操作,它是一种数据绑定的 ActiveX 控件。DataGrid 控件的每一个单元格都可以包含文本值,但不能链接或内嵌对象。可以在代码中指定当前单元格,或者用户可以使用鼠标或箭头键在运行时改变它。通过在单元格中键入或编程的方式,单元格可以交互地编辑。单元格能够被单独地选定或按照行来选定。下面我们来完成此程序。首先新建一个标准 exe 工程,并把工程中 form1 的 caption 属性设置为“使用 ADO Data 控件连接 Access 的简单实例” ,width 属性值设为 8490。在窗体中加入 1 个 ADO
33、 Data 控件。如果在工具箱中找不到 ADO Data 控件,可以右击工具箱,选择“部件.”菜单项,然后在“部件”窗口的“控件”选项卡中选中 Microsoft ADO Data Control6.0(OLEDB)。然后再向 form1 上加入一个 DataGrid 控件,并将其 width 属性值设为8055。如果工具箱中不存在这个控件,可以右击工具箱,在“部件”窗口的“控件”选项卡中选中 Microsoft DataGrid Control6.0(OLEDB)。完成后如下图所示:下面我们对这些控件的一些属性进行设置。设置 Adodc1:(1) ConnectionString 属性Con
34、nectionString 属性表示 Adodc1 的连接字符串,可以通过三种方法来设置连接字符串属性,如下图所示。这里我们选择“使用 ODBC 数据源名称” ,并在下拉框中选择Access_db,单击确定按钮,就可以在 ConnectionString 属性中看到“DSN=Access_db”的字符串形式。(3) RecordSource 属性RecordSource 属性设置 RecordSet 源,这里我们将在属性页的命令文本下输入如下的SQL 语句:Select * From wzdz Order By 网站名称 单击确定按钮,就可以在 RecordSource 属性中看到“Selec
35、t * From wzdz Order By 网站名称”的字符串形式,如下图:设置 DataGrid1 的 DataSource 属性:DataSource 属性为该控件指定数据源,本例中该属性被设置为名为“Adodc1”的 ADO Data 控件,这将返回 “网站地址”表中的所有记录。运行一下程序,可以看到程序已经成功连接到了 Access_db.mdb 数据库,并读取“wzdz ”表的所有记录显示到 DataGrid 控件中。更进一步的,如果将 DataGrid 控件的 AllowAddNew、AllowDelete 和 AllowUpdate 属性分别设置为 true,则可在程序运行时通过其添加、删除和更新数据库中的记录。