VB程序设计第11章 数据库访问_第1页
VB程序设计第11章 数据库访问_第2页
VB程序设计第11章 数据库访问_第3页
VB程序设计第11章 数据库访问_第4页
VB程序设计第11章 数据库访问_第5页
已阅读5页,还剩134页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、L o g oL o g o第第11章数据库访问技术章数据库访问技术L o g oL o g o知识要点知识要点习题与解答习题与解答实训指导实训指导测验题测验题第第11章数据库访问技术章数据库访问技术L o g oL o g o 11.1 知识要点知识要点v1、SQL语句的基本结构语句的基本结构vSQL是结构化查询语言(是结构化查询语言(Structured Query Language)的缩写,是一种数)的缩写,是一种数据查询和编程语言。据查询和编程语言。SQL的语句,可以的语句,可以说是说是SQL语法的主体,用来对某一个特语法的主体,用来对某一个特定的数据库发出指示,并返回相关的数定的数据

2、库发出指示,并返回相关的数据,而据,而SQL的语法结构,基本上可以表的语法结构,基本上可以表示为:示为:L o g oL o g ovSELECT select_list FROM tab_name|view_name vWHERE condition vGROUP BY column_name vHAVING condition vORDER BY column_list vINTO TEMP table_name L o g oL o g ov其中的参数说明如下:其中的参数说明如下:select_list:选择表或:选择表或*;tab_name:表名称;:表名称;view_name:视图名

3、称;:视图名称;condition:查询条件,可使用:查询条件,可使用BETWEEN、IN、LIKE、IS NULL、LIKE、MATCHES、NOT、AND、OR、=、!=或或、= 、=、=1 AND Day(Birthday)50 datPrimaryRS.Refresh 如果不使用如果不使用Refresh方法,对方法,对RecordSource属性的修改不会生效。属性的修改不会生效。L o g oL o g o8如何关闭(断开)用ADO创建的数据库连接?v答:用ADO打开数据库无非是用两个对象Recordset和connction,要想关闭用它们打开的数据库的方法是object.clos

4、e。 L o g oL o g o9何用何用ado recordset的的sort 属性对记录集属性对记录集的某个字段按降序排列?的某个字段按降序排列?答:看到答:看到Sort属性的格式就是:属性的格式就是: v 字段字段1 DESC 字段字段2 ASC . v 其中其中ASC表示升序,表示升序,DESC表示降序。表示降序。排在前面的字段优先。程序代码代码示例:排在前面的字段优先。程序代码代码示例: L o g oL o g ov Public Sub SortX() v Dim cnn As New ADODB.Connection v Dim rst As New ADODB.Record

5、set v rst.CursorLocation = adUseClient v cnn.Open DSN=Pubs;Provider=MSDASQL;uid=sa;pwd=; v rst.Open SELECT * FROM Authors, cnn, _ v adOpenStatic, adLockReadOnly, adCmdText v SortXprint Initial Order, rst v rst.Sort = au_lname ASC, au_fname ASC v SortXprint Last Name Ascending, rst v rst.Sort = au_ln

6、ame DESC, au_fname ASC v SortXprint Last Name Descending, rst L o g oL o g ov rst.Close v cnn.Close v End Sub v Public Sub SortXprint ( title As String, rstp As ADODB.Recordset ) v Debug.Print - & title & - v Debug.Print First Name Last Name & vbCr & _ v - v rstp.MoveFirst v While No

7、t rstp.EOF v Debug.Print rstp!au_fname & & rstp!au_lname v rstp.MoveNext v Wend v Debug.Print v End SubL o g oL o g o10如何创建数据库的表格?如何创建数据库的表格?v答:如果创建答:如果创建Access数据库的表,应该使数据库的表,应该使用用CreateTableDef方法。如果创建方法。如果创建SQL Server等数据库的表,需要使用等数据库的表,需要使用CREATE TABLE查询查询 。 L o g oL o g o(1) 创建Access数据库的表 v

8、 Dim dbs As Database, tdf As TableDef, fld As Field v 返回当前数据库 v Set dbs = CurrentDb v 返回指向新表的TableDef对象 v Set tdf = dbs.CreateTableDef(Contacts) v 在表中添加一个新字段 v Set fld = tdf.CreateField(ContactName, dbText, 40) v 使用Append追加Field对象到TableDef的Fields集合中 L o g oL o g ov tdf.Fields.Append fld v tdf.Fields

9、.Refresh v 使用使用Append追加追加TableDef对象到数据库的对象到数据库的TableDefs集合中集合中 v dbs.TableDefs.Append tdf v dbs.TableDefs.Refresh v Set dbs = Nothing v (2)创建)创建SQL Server等数据库的表等数据库的表 v Dim dbs As Database v . v 使用两个文本字段来创建表使用两个文本字段来创建表 。 v dbs.Execute CREATE TABLE ThisTable _ v & ( + Text1.Text TEXT, + Text2.Te

10、xt + TEXT); v dbs.Close L o g oL o g o11如何能够提高调用如何能够提高调用ADO数据库的速度?数据库的速度?答:可以直接使用答:可以直接使用ADO对象编程。对象编程。 v 引用:引用:Microsoft ActiveX Data Object 2.0 Library dim db as new adodb.connection dim rs as new adodb.recordset db.open Provider=Microsfot.olddb.jet.3.51;. L o g oL o g o rs.open SQL 语 句 ,db,adopenk

11、eyset,adlockoptimistic if rs.RecordsetCount0 then . v 如果只显示推荐使用ListView 控件;如果执行编辑,推荐使用MsFlexGrid控件; 可将查询出来的记录集一条条地赋给ListView或MsFlexGrid控件。 v 使用代码要比使用控件速度快很多且容易控制,但必须编程实现。将记录集的锁定属性设为:lockReadonly。将curlocation属性设为dbuesclient,速度将大大改善。L o g oL o g ov11如何用如何用VB打开一个打开一个Access数据库查数据库查看一个表里的内容:看一个表里的内容:v答:答

12、:VB本身支持数据库编程,查看本身支持数据库编程,查看Access内容的最好办法是使用内容的最好办法是使用Data控件和控件和DBGrid控件进行绑定。控件进行绑定。 L o g oL o g o12VB中的中的ADO、DAO、RDO等是如何区等是如何区分的?分的?v答:答:Data控件属于控件属于DAO,DAO主要适合本主要适合本机数据库的读写,也可以通过机数据库的读写,也可以通过ODBC访问访问网上的数据库,但效率比较低,一般不采网上的数据库,但效率比较低,一般不采用这种方法,更愿意采用用这种方法,更愿意采用RDO或或ADO。如。如果要使用果要使用 RDO或或ADO的数据库控件都需要的数据

13、库控件都需要另外从部件对话框中添加相应的数据控件,另外从部件对话框中添加相应的数据控件,三种方式的三种方式的 数据控件不同。数据控件不同。 L o g oL o g ov区分所作的程序是DAO、RDO,还是ADO的,可以看看打开数据库的方式。DAO使用OpenDatabase方法,RDO使用OpenConnection方法,而ADO一般通过一个ConnectionString来确定数据库的类型和位置。L o g oL o g ov13DAO与与ODBC有什么区别?有什么区别?v答:DAO和ODBC的工作原理差别较大。ODBC原本是通过ODBC API调用的,但VB的DAO和 RDO都封装了OD

14、BC,所以,在VB中应用起来感觉差别不大,调用的时候只是在指定驱动时有所不同,一般的数据库操作差不多。DAO是针对VB/Access设计的,它所支持的数据库类型就是VB的那几种,很少见第三方驱动程序。 L o g oL o g ovODBC是开放的数据库接口,几乎支持所有数据库类型,对于很多VB不能很好地支持的数据库类型,如Visual FoxPro 5.0,都可以使用ODBC驱动。一般来说DAO支持本机Access数据库比较理想,但在客户/服务器体系上不如ODBC功能强大。L o g oL o g o知识要点知识要点习题与解答习题与解答实训指导实训指导测验题测验题第第11章数据库访问技术章数

15、据库访问技术L o g oL o g o 11.3实训指导实训指导11.3.1技能训练的目的v熟练数据库访问控件的使用方法。v掌握数据环境设计器的使用。v掌握数据报表的使用方法。L o g oL o g o11.3.2技能训练的内容v【实训11.1】设计一个数据库应用程序,要求能够自动搜索数据库中的所有表的表名并将其显示在列表框中,将选定表的所有记录显示在表格中。L o g oL o g o窗体设计如下:在窗体上添加一个Data控件、一个列表框ListBox控件和一个表格MSFlexGrid控件并将该列表框和表格的DataSource属性设为Data1。具体设计如图11-4所示。数据库设计是将

16、“C:Program FilesMicrosoft Visual StudioVB98”目录中的BIBLIO.MDB存放在当前VB程序所在的文件夹中,并且只保留Authors、Publishers和Titles这三个表。这三个表的具体设计如表11-5至1-7所示。L o g oL o g o图图11-4L o g oL o g o图图11-5L o g oL o g o图图11-6L o g oL o g o图图11-7L o g oL o g o程序代码设计如下:v Private Sub Form_Load()v Dim dbname As Stringv Dim db As Databa

17、sev Dim qdef As QueryDefv Dim td As TableDefv 打开数据库v dbname = App.Pathv If Right$(dbname, 1) Then dbname = dbname & v dbname = dbname & data.mdbv Set db = OpenDatabase(dbname)v 列出所有数据库中表的名字v For Each td In db.TableDefsL o g oL o g ov 不允许系统表列出v If Left$(td.Name, 4) MSys Then List1.AddItem td.

18、Namev Next tdv db.Closev 将数据库与Data1控件连接v Data1.DatabaseName = dbnamev End Subv 打开指定的表v Private Sub List1_Click()v Dim table_name As Stringv Dim sql As Stringv table_name = List1.List(List1.ListIndex)图11-8v sql = SELECT * FROM & table_namev Data1.Caption = table_namev Data1.RecordSource = sqlv Da

19、ta1.Refreshv End SubL o g oL o g ov程序运行结果如图11-8所示。图图11-8L o g oL o g ov【实训实训11.2】利用利用DAO数据访问对象,设数据访问对象,设计一个数据库控制演示程序,完成记录的计一个数据库控制演示程序,完成记录的添加、删除、搜索及浏览的功能。添加、删除、搜索及浏览的功能。窗体设计:在窗体上分别添加四个标签、四窗体设计:在窗体上分别添加四个标签、四个文本框架和五个命令按钮,其属性设置个文本框架和五个命令按钮,其属性设置如表如表11-1所示;窗体设计效果,如图所示;窗体设计效果,如图11-9所示。所示。数据库设计:数据库采用数据库

20、设计:数据库采用Access数据库设计,数据库设计,名为名为cy。其中的表名为。其中的表名为cytable,表结构如,表结构如图图11-10所示。所示。L o g oL o g o图图11-9L o g oL o g o图图11-10L o g oL o g o表表11-1 “数据库控制演示程序数据库控制演示程序”窗体设计控件名称及属性值窗体设计控件名称及属性值控件名称属性名称属性值属性名称属性值CommonButton1名称cmdBackCaptionCommonButton2名称cmdAddCaption添加CommonButton 3名称cmdDeleteCaption删除CommonB

21、utton 4名称cmdSearchCaption搜索CommonButton 5名称cmdForwardCaptionText1 名称txtNameText 2名称txtEmailText 3名称txtPhoneText 4名称txtFaxL o g oL o g o程序代码设计如下:程序代码设计如下:v Dim db As Databasev Dim rs As Recordsetv Private Sub cmdAdd_Click()v newName = InputBox(Please Enter The Name To Add, AddressBook)v newEmail = In

22、putBox(Please Enter The Email To Add, AddressBook)v newPhone = InputBox(Please Enter The Phone Number To Add, AddressBook)v newFax = InputBox(Please Enter The Fax Number To Add, AddressBook)v With rsv .AddNewv !Name = LCase(newName)v !Email = LCase(newEmail)v !Phone = LCase(newPhone)v !Fax = LCase(n

23、ewFax)v .Updatev End WithL o g oL o g ov MsgBox (newName & Was Added To The Address Book)v End Subv Private Sub cmdBack_Click()v On Error Resume Nextv rs.MovePreviousv txtName = rs.Fields(Name)v txtEmail = rs.Fields(Email)v txtPhone = rs.Fields(Phone)v txtFax = rs.Fields(Fax)v End Subv Private S

24、ub cmdDelete_Click()v Set rs = db.OpenRecordset(SELECT * From cytable WHERE name = _v + Chr$(34) + txtName.Text + Chr$(34) + ;)L o g oL o g ov rs.MoveFirstv Do Until rs.EOFv rs.Deletev rs.MoveNextv v Loopv db.Closev Form_Loadv End Subv Private Sub cmdForward_Click()v On Error Resume Nextv rs.MoveNex

25、tv txtName = rs.Fields(Name)v txtEmail = rs.Fields(Email)v txtPhone = rs.Fields(Phone)L o g oL o g ov txtFax = rs.Fields(Fax)v End Subv Private Sub cmdSearch_Click()v Set rs = db.OpenRecordset(SELECT * FROM cytable)v NameQuery = InputBox(Enter A Name To Search For, Name Query)v rs.MoveFirstv Do Unti

26、l rs.EOFv If rs.Fields(name) Like * & LCase(NameQuery) & * Thenv txtName = rs.Fields(Name)v txtEmail = rs.Fields(Email)v txtPhone = rs.Fields(Phone)v txtFax = rs.Fields(Fax)v Exit Subv Elsev rs.MoveNextv End IfL o g oL o g ov Loopv End Subv Private Sub Form_Load()v Set db = OpenDatabase(App.

27、Path + /cy.mdb)v Set rs = db.OpenRecordset(cytable)v If rs.EOF Thenv MsgBox Please Add Someone To The Databse图11-11v Elsev rs.MoveFirstv txtName = rs.Fields(Name)v txtEmail = rs.Fields(Email)v txtPhone = rs.Fields(Phone)v txtFax = rs.Fields(Fax)v End Ifv End SubL o g oL o g ov程序运行结果如图11-11所示。图图11-11

28、L o g oL o g ov【实训11.3】使用Data控件访问数据库,保存用户的个性化设置。v程序设计要求:利用程序设计要求:利用VB设计一个应用程序,设计一个应用程序,将用户对文本框所作的设置保存下来,以将用户对文本框所作的设置保存下来,以便用户下一次启动时其程序界面及相关设便用户下一次启动时其程序界面及相关设置都是自己本次关机前最中意和习惯的设置都是自己本次关机前最中意和习惯的设计。假设用计。假设用TextBox做编辑栏的字处理程序,做编辑栏的字处理程序,该程序提供了让用户对编辑栏背景色和字该程序提供了让用户对编辑栏背景色和字体进行设置的按钮。体进行设置的按钮。L o g oL o g

29、 ov窗体设计如下:首先,给窗体添加一个Data控件、一个文本框text1、两个命令按钮(CmdBackColorSetting和CmdFontSetting)和一个通用对话框CommonDialog控件。然后,用Access建立一个名为Pad的数据库,在库中建立一个表Myset,给表添加四个字段:背景色(数据),前景色(文本),字体名称(文本),字体大小(文本)。注意:请将库文件存入程序所在目录。窗体和数据库中表的设计如图11-12和11-13所示。L o g oL o g o图图11-12图图11-13L o g oL o g ov 编写程序代码如下:编写程序代码如下: v Private

30、 Sub CmdBackColorSetting_Click()v 设置背景色v CommonDialog1.Flags = cdlCCFullOpenv CommonDialog1.ShowColorv On Error GoTo errv Data1.Recordset.Editv err:v If err.Number = 3021 Thenv Data1.Recordset.AddNewv End Ifv Data1.Recordset.Fields(背景色) = CommonDialog1.Colorv Data1.Recordset.Updatev Text1.BackColor

31、= CommonDialog1.Colorv End SubL o g oL o g ov Private Sub CmdFontSetting_Click()v 设置字体v CommonDialog1.Flags = cdlCFEffects Or cdlCFBothv CommonDialog1.ShowFontv On Error GoTo FontErrv Data1.Recordset.Editv FontErr:v If err.Number = 3021 Thenv Data1.Recordset.AddNewv End Ifv Data1.Recordset.Fields(字体

32、大小) = CommonDialog1.FontSizev Data1.Recordset.Fields(字体颜色) = CommonDialog1.Colorv Data1.Recordset.Fields(字体名称) = CommonDialog1.FontNamev Data1.Recordset.UpdateL o g oL o g ov Text1.ForeColor = CommonDialog1.Colorv Text1.Font.Name = CommonDialog1.FontNamev Text1.Font.Size = CommonDialog1.FontSizev En

33、d Subv 窗体的Activate事件v Private Sub Form_Activate()v On Error Resume Nextv Text1.BackColor = Data1.Recordset.Fields(背景色)v Text1.Font.Size = Data1.Recordset.Fields(字体大小)v Text1.ForeColor = Data1.Recordset.Fields(字体颜色)v Text1.Font.Name = Data1.Recordset.Fields(字体名称)v End Subv Private Sub Form_Load()v 定位

34、库文件路径v Data1.DatabaseName = App.Path + pad.mdbv Data1.RecordSource = MySetv End SubL o g oL o g ov程序运行结果如图11-14和11-15所示。 图图11-14图图11-15L o g oL o g o【实训实训11.4】采用采用ADO控件动态链接库访问控件动态链接库访问数据库,存取数据库中的图片。数据库,存取数据库中的图片。v数据库的设计数据库的设计 :数据库:数据库MyDataPicture采采用用SQL Server 2000设计(也可使用设计(也可使用Access数据库),首先新建一张表,取

35、名数据库),首先新建一张表,取名为为MyTable,添加三个字段,分别是:,添加三个字段,分别是:name (Char型型);number (Char型型);picture (image型型),设计好后存盘。,设计好后存盘。 L o g oL o g ov为了可以进行远程调用,我们采用ODBC的方法进行,双击打开控制面板里的ODBC数据源,点“系统DSN”选项卡,按“添加”按钮选择对应的数据源驱动程序SQL Server,依照添加向导加添加数据源,下面就可以开始程序的编写了。 L o g oL o g ov窗体设计:新建一个工程。本程序采用ADO控件和动态链接库访问数据库,需要加入ADO的运行

36、库,单击“工程引用”菜单,出现引用对话框,选择Microsoft ActiveX Data Objects2.0 Library并确定。在窗体Form1上,分别添加四个Label控件,两个TextBox控件,一个PictureBox控件,一个ADODC控件, 三个CommandButton控件, 一个CommandDialog控件, L o g oL o g ov如果ADODC和CommandDialog控件没有出现在工具框上,请单击菜单“工程部件”。点“控件”选项卡,在其中选中Microsoft ADO Data Control 6.0(OLEDB)和Microsoft Common Dia

37、log Control 6.0两项按“确定”按钮。v 窗体控件的属性设置如表11-2所示,窗体设计的结果如图11-16所示。L o g oL o g o表表11-2 “存取数据库中的图片存取数据库中的图片”窗体设计控件名称及属性值窗体设计控件名称及属性值控件名称属性名称属性设置控件名称属性名称属性设置Form1MaxButtonFalseCommonDialog1名称CDlgLabel1Caption姓名:Adodc1名称AdoCtrLabel2Caption编号:CommonButton1名称PreViewLabel3名称ResNameCommonButton1Caption预览Label3

38、BackColor&H80000009CommonButton2名称SaveLabel3BorderStyle1Fixed CommonButton2Caption保存Label3DataField姓名CommonButton3NameUpdateLabel3DataSourceMyDataPictureCommonButton3Caption更新Label4名称ResNumbPictureBox1名称PicBoxLabel4BackColor&H80000009PictureBox1 AutoSize FalseLabel4BorderStyle1FixedPictureBo

39、x1AutoRedrawFalseLabel4DataField编号PictureBox1DataField照片Label4DataSourceAdoCtrPictureBox1DataSourceAdpCtrText1名称NamesText2名称NumbL o g oL o g o图图11-16L o g oL o g o程序代码设计如下:程序代码设计如下: v Dim Constr As String ODBC路径v Dim FileName As String 图片文件名v Const BLOCKSIZE = 4096 每次读写块的大小v Dim ADOCon As New ADODB.

40、Connection ADODB Connection对象v Dim ADORst As New ADODB.Recordset ADODB Recordset 对象v Dim ADOFld As ADODB.Field ADODB Field 对象v Private Sub SaveToDB(ByRef Fld As ADODB.Field, DiskFile As String)v Dim byteData() As Byte 定义数据块数组v Dim NumBlocks As Long 定义数据块个数v Dim FileLength As Long 标识文件长度v Dim LeftOve

41、r As Long 定义剩余字节长度v Dim SourceFile As Long 定义自由文件号v Dim i As Long 定义循环变量v SourceFile = FreeFile 提供一个尚未使用的文件号L o g oL o g ov Open DiskFile For Binary Access Read As SourceFile 打开文件v FileLength = LOF(SourceFile) 得到文件长度v If FileLength = 0 Then 判断文件是否存在v Close SourceFilev MsgBox DiskFile & 无内容或不存在!v

42、 Elsev NumBlocks = FileLength BLOCKSIZE 得到数据块的个数v LeftOver = FileLength Mod BLOCKSIZE 得到剩余字节数v Fld.Value = Nullv ReDim byteData(BLOCKSIZE) 重新定义数据块的大小v For i = 1 To NumBlocksv Get SourceFile, , byteData() 读到内存块中v Fld.AppendChunk byteData() 写入FLDL o g oL o g ov Next iv ReDim byteData(LeftOver) 重新定义数据块

43、的大小重新定义数据块的大小v Get SourceFile, , byteData() 读到内存块中读到内存块中v Fld.AppendChunk byteData() 写入写入FLDv Close SourceFile 关闭源文件关闭源文件v End Ifv End Subv Private Sub Form_Load()v Constr = DSN=cy_image 定义定义ODBC连接连接v ADOCon.Open Constr 创建一个连接创建一个连接v ADORst.Open MyTable, ADOCon, adOpenDynamic, adLockOptimisticv 打开一个

44、打开一个ADO动态集动态集 表名为表名为MyTablev Set AdoCtr.Recordset = ADORst 将动态集赋给将动态集赋给ADO控件控件v End Subv Private Sub Form_Unload(Cancel As Integer)v 记得关闭打开的数据集,释放资源记得关闭打开的数据集,释放资源L o g oL o g ov ADORst.Closev ADOCon.Closev Set ADORst = Nothingv Set ADOCon = Nothingv End Subv Private Sub PreView_Click()v 显示打开文件的公用对话

45、框,选择需要加入数据库的图片v CDlg.Filter = 图(*.bmp)|*.bmpv CDlg.ShowOpenv FileName = CDlg.FileNamev PicBox.Picture = LoadPicture(FileName) 预览图片v End Subv Private Sub Save_Click()v Update_Click 重新打开纪录集,刷新纪录v ADORst.AddNew 新增纪录v ADORst(name).Value = Names.Text 给动态集的第一个字段赋值v ADORst(number).Value = Numb.Text 给动态集的第二

46、个字段赋值v Set ADOFld = ADORst(picture) 给ADODB.Field对象赋值L o g oL o g ov Call SaveToDB(ADOFld, FileName) 调用子程序,给第三个字段(image)赋值v ADORst.Updatev End Subv Private Sub Update_Click() 重新打开纪录集,刷新纪录v ADORst.Closev ADOCon.Closev Set ADORst = Nothingv Set ADOCon = Nothingv ADOCon.Open Constrv ADORst.Open MyTable,

47、 ADOCon, adOpenDynamic, adLockOptimisticv Set AdoCtr.Recordset = ADORst 将动态集赋给ADO控件v End Subv 程序运行结果如图11-17和11-18所示。L o g oL o g o图图11-17图图11-18L o g oL o g ov【实训实训11.5】“登录登录”窗体的设计。具体要窗体的设计。具体要求如下:求如下:v“登录登录”窗体主要用于解决应用程序的窗体主要用于解决应用程序的使用安全性问题,因此,设计任何一个系使用安全性问题,因此,设计任何一个系统应用程序,统应用程序,“密码登录密码登录”设计是不可缺设计

48、是不可缺少的。本例将用户名和密码写在用少的。本例将用户名和密码写在用SQL Server 2000设计的数据库设计的数据库library中的用户中的用户表表user中。表中。表use的详细设计如图的详细设计如图11-19所所示;窗体设计如图示;窗体设计如图11-20所示,其中各个控所示,其中各个控件的属性设置如表件的属性设置如表11-3所示。所示。L o g oL o g o图图11-19L o g oL o g o图图11-20L o g oL o g o表表11-3 “登录信息登录信息”窗体各个控件的属性设置窗体各个控件的属性设置对象对象属性属性设置值设置值对象对象属性属性设置值设置值Co

49、mmonButton1名称名称cmdOKText1名称名称TxtServerCommonButton1Caption确定确定Text2名称名称txtUserNameCommonButton2名称名称cmdCancelText3名称名称txtPasswordCommonButton2Caption取消取消Form1名称名称frmLoginLabel1名称名称Label1Form1Caption登录登录Label1Caption图书馆管理信息系统图书馆管理信息系统L o g oL o g o程序代码设计如下:v Dim Cnn As ADODB.Connectionv Dim Rst As ADO

50、DB.Recordsetv Private Sub cmdCancel_Click()v Me.Hidev End Subv Private Sub cmdOK_Click()v Set Cnn = New ADODB.Connection 数据库连接v Cnn.ConnectionString = Provider=SQLOLEDB.1; & _v Data Source= & Me.TxtServer.Text & ;Initial Catalog=library;User ID=sa;Password=888;v Cnn.Openv Set Rst = New A

51、DODB.Recordsetv Rst.CursorType = adOpenKeysetL o g oL o g ov Rst.LockType = adLockOptimisticv Rst.Open SELECT username, password FROM users, Cnnv 检查正确密码v If Trim(Rst! ) = Me.txtUserName.Text And _v Trim(Rst!password) = Me.txtPassword.Text And _v Me.TxtServer.Text Thenv Me.Hidev frmBook1.Showv Elsev

52、MsgBox 请输入正确的服务器名、用户名和密码!, , 登录v Me.TxtServer.Text = v Me.txtUserName.Text = v Me.txtPassword.Text = v Me.TxtServer.SetFocusv End Ifv End SubL o g oL o g ov“登录”窗体程序的运行结果如图11-21所示。 图11-21L o g oL o g o【实训11.6】利用ADO数据访问对象,设计一个通用的数据库访问模块。v一般在应用程序的运行过程中,由于要依据不同的情况设置不同的记录集,所以需要多次连接服务器中的数据库,所以为了简化程序代码的编写,

53、需要将数据库的访问及记录集的生成写在模块中。本例在模块Module1中分别设计了函数ConnectString和ExecuteSQL, L o g oL o g ov其中ExecuteSQL函数的返回值是利用ADO数据访问对象,访问SQL Server 2000开发的数据库library,依据SQL语句形成的记录集。数据库访问模块的程序代码设计如下:Public Function ConnectString() As String返回数据库的连接 ConnectString = Provider=SQLOLEDB.1; & _ Data Source= & Name of Se

54、rver & ;Initial Catalog=library;User ID=sa;Password=;End FunctionL o g oL o g ov执行SQL语句并且返回记录集vPublic Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordsetv Dim Cnn As ADODB.Connectionv Dim Rst As ADODB.Recordsetv Dim sTokens() As Stringv v On Error GoTo ExecuteSQL_Err

55、orv sTokens = Split(SQL)v Set Cnn = New ADODB.ConnectionL o g oL o g ov Cnn.Open ConnectStringv If InStr(INSERT,DELETE,UPDATE, UCase$(sTokens(0) Thenv Cnn.Execute SQLv MsgString = sTokens(0) & query successfulv Elsev Set Rst = New ADODB.Recordsetv Rst.Open Trim$(SQL), Cnn, adOpenKeyset, adLockOptimisticv Set ExecuteSQL = Rstv MsgSt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论