实验六通过ODBC方式访问数据库.docx
- 文档编号:8488610
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:948.43KB
实验六通过ODBC方式访问数据库.docx
《实验六通过ODBC方式访问数据库.docx》由会员分享,可在线阅读,更多相关《实验六通过ODBC方式访问数据库.docx(14页珍藏版)》请在冰豆网上搜索。
实验六通过ODBC方式访问数据库
实验六 通过ODBC方式访问数据库
一、实验条件与环境
1.通用PC机
2.PC机必须安装Windows2000系列、WindowsXP系列或WindowsNT操作系统平台
3.PC机还须安装MicrosoftSQLServer2000任意一版本(个人版、标准版、企业版)
4.PC机还须安装VB、VC、C++Builder、Dehpi等面向对象的可视化程序设计软件
5.最好有一台公用的SQLServer2000服务器
二、实验目的
1.通过上机实验了解可视化程序设计语言对数据库进行访问的常用方法
2.通过上机实验掌握软件开发工具面向用户提供的ODBC对象接口的概念及其作用
3.通过上机实验熟悉SQL语句在面向对象编程语言中的使用
4.通过上机实验熟悉通过ODBC接口访问数据库并对数据库进行操作
5.通过上机实验熟悉使用ODBC来进行数据库应用程序的设计
6.通过上机实验熟悉数据源的概念及数据源的创建方法
1.通过上机实验熟悉ADODATA控件的主要属性、事件、方法及其使用
三、实验要求:
1.要求学生至少熟悉一门面向对象的可视化程序设计语言(如:
VB、VC、C++Builder、Dehpi等)
2.实验前,要求学生充分作好ADODATA控件、ODBC数据接口及数据源等相关内容的预习工作
3.本实验涉及的实验内容最好能在2课时内完成
4.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交
四、通过ODBC方式访问数据库并进行各种数据操作的一个实例
建立一个名为MyDB的数据库,然后在此数据库中建立一个名为S的数据表,有关数据表S的属性描述为:
Sno,学号,数据类型为char(10);Sname,姓名,数据类型为char(8);Ssex,性别,数据类型为char
(2);BirthDay,生日,数据类型为datetime(8)。
创建一个名为Students的数据源,然后利用可视化程序设计语言设计一个用户操作界面,通过ODBC数据接口和ADODATA实现对数据库MyDB中数据表S的查询、插入、删除、修改等数据操作。
实现过程说明:
本功能的实现采用MicrosoftSQLServer2000作为数据库管理系统,采用VB作为用户操作界面的软件开发工具。
计算机操作系统为Windows2000Professional。
实现步骤:
1.为数据库MyDB中S数据表创建名为Students的数据源
打开“开始/设置/控制面板/管理工具/数据源(ODBC)”,然后按照系统的提示,逐步进行设置,最终创建数据源Students。
a)鼠标双击“数据源(ODBC)”图标,出现“ODBC数据源管理器”界面(见图1);
2)鼠标单击“ODBC数据源管理器”界面的“添加”按钮,出现“创建数据源”界面(见图2),在此界面中选择安装数据源的驱动程序类别为“SQLServer”;
3)鼠标单击“创建数据源”界面的“完成”按钮,出现“建立新的数据源到SQLServer”界面(见图3),在此界面中设置好数据源的名称、描述信息及服务器的名称等参数;
4)鼠标单击图3界面的“下一步”按钮,出现图3界面的一个子界面,界面标题栏的名称也为“建立新的数据源到SQLServer”(见图4),在此界面中设置好数据源的登陆模式及登陆时的用户名和密码等参数;
5)鼠标单击图4界面的“下一步”按钮,出现图3界面的一个子界面,界面标题栏的名称也为“建立新的数据源到SQLServer”(见图5),在此界面中选定可选项“更改默认的数据库为”,并设置好更改默认的数据库为MyDB,设置情况如图5所示;
6)鼠标单击图5界面的“下一步”按钮,出现图3界面的一个子界面,界面标题栏的名称也为“建立新的数据源到SQLServer”(见图6),在此界面中所有可选项按其默认值选定,不需作改动;
7)鼠标单击图6界面的“完成”按钮,出现“ODBCMicrosoftSQLServer安装”界面(见图7);
8)鼠标单击图7界面的“测试数据源”按钮,出现“SQLServerODBC数据源测试”界面(见图8);
9)鼠标单击图8界面的“确定”按钮,数据源Students就建立起来了。
2.利用VB编程语言创建数据库应用程序用户操作界面
在VB中创建的用户操作界面如下图9所示。
界面中涉及到的控件有以下这些(其含义和功能作用参见软件界面图9):
1)Frame控件FrameCond
2)Frame控件FrameOpt
3)DataGrid控件
4)Label控件Label1控件数组,Index范围为0至5
5)TextBox控件TxtSno
6)TextBox控件TxtSname
7)OptionButton控件OptSsex控件数组,Index范围为0至1
8)ComboBox控件控件数组,Index范围为0至2
9)CommandButton控件CmdOpt控件数组,Index范围为0至4
10)Adodc控件AdodcODBC(设置为不可见模式)
◆常量、变量定义
ConstStrDSN="Provider=MSDASQL.1;PersistSecurityInfo=False;UserID=sa;&
password=sa;
DataSource=Students;Mode=ReadWrite"
ConstStrRst="select*froms"
DimConnAsNewADODB.Connection
DimRstAsNewADODB.Recordset
◆设置数据操作控件的相应属性
AdodcODBC.ConnectionString=StrDSN
AdodcODBC.RecordSource=StrRst
DataGridQuery.DataSource=AdodcODBC
◆主要控件事件代码说明
1)窗体装载事件及代码
PrivateSubForm_Load()
AdodcODBC.ConnectionString=StrDSN
AdodcODBC.RecordSource=StrRst
Fori=1970To2005
ComboDate(0).AddItemi
Nexti
Fori=1To12
ComboDate
(1).AddItemi
Nexti
Fori=1To31
ComboDate
(2).AddItemi
Nexti
Conn.OpenStrDSN
Rst.CursorType=adOpenDynamic
Rst.CursorLocation=adUseClient
Rst.LockType=adLockOptimistic
Rst.ActiveConnection=Conn
Rst.OpenStrRst
EndSub
2)窗体卸载事件及代码
PrivateSubForm_Unload(CancelAsInteger)
Rst.Close
Conn.Close
EndSub
3)数据网格控件DataGridQuery中数据发生更新时触发的事件及代码
PrivateSubDataGridQuery_AfterUpdate()
IfDataGridQuery.Row>-1Then
AdodcODBC.Recordset.Update
EndIf
EndSub
4)进行数据操作(查询、插入、删除、修改)及设置操作条件的事件及代码说明:
查询操作可以不带条件查询,可以基于学号查询,可以基于姓名查询,可以基于性别查询,还可基于学号、姓名、性别三条件联合查询;
插入操作要求用户将一个学生信息填写完整后才能进行;
删除操作只能基于两个条件进行,一个是基于学号的删除,另一个是基于性别的删除;
修改操作直接在数据网格控件DataGridQuery上直接进行,但本软件不提供修改操作时对修改项进行数据合法性检查的功能;
可以通过点击软件界面上的“条件复原”按钮进行操作条件的复原和设置。
PrivateSubCmdOpt_Click(IndexAsInteger)
DimQuerycondition,TmpStrAsString
SelectCaseIndex
Case0‘数据查询操作
Fori=3To5
Label1(i).Enabled=False
ComboDate(i-3).Enabled=False
Nexti
IfTxtSno.Text=""AndTxtSname.Text=""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=FalseThen
Querycondition="select*froms"
EndIf
IfTxtSno.Text<>""AndTxtSname.Text=""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=FalseThen
Querycondition="select*fromswheresno="&"'"&Trim(TxtSno.Text)&"'"
EndIf
IfTxtSno.Text=""AndTxtSname.Text<>""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=FalseThen
Querycondition="select*fromswheresname="&"'"&Trim(TxtSname.Text)&"'"
EndIf
IfTxtSno.Text=""AndTxtSname.Text=""AndOptSsex(0).Value=TrueAndOptSsex
(1).Value=FalseThen
Querycondition="select*fromswheressex="&"'"&Trim(OptSsex(0).Caption)&"'"
EndIf
IfTxtSno.Text=""AndTxtSname.Text=""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=TrueThen
Querycondition="select*fromswheressex="&"'"&Trim(OptSsex
(1).Caption)&"'"
EndIf
IfTxtSno.Text<>""AndTxtSname.Text<>""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=FalseThen
Querycondition="select*fromswheresno="&"'"&Trim(TxtSno.Text)&"'"&"andsname="&"'"&Trim(TxtSname.Text)&"'"
EndIf
IfTxtSno.Text<>""AndTxtSname.Text=""AndOptSsex(0).Value=TrueAndOptSsex
(1).Value=FalseThen
Querycondition="select*fromswheresno="&"'"&Trim(TxtSno.Text)&"'"&"andssex="&"'"&Trim(OptSsex(0).Caption)&"'"
EndIf
IfTxtSno.Text<>""AndTxtSname.Text=""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=TrueThen
Querycondition="select*fromswheresno="&"'"&Trim(TxtSno.Text)&"'"&"andssex="&"'"&Trim(OptSsex
(1).Caption)&"'"
EndIf
IfTxtSno.Text=""AndTxtSname.Text<>""AndOptSsex(0).Value=TrueAndOptSsex
(1).Value=FalseThen
Querycondition="select*fromswheresname="&"'"&Trim(TxtSname.Text)&"'"&"andssex="&"'"&Trim(OptSsex(0).Caption)&"'"
EndIf
IfTxtSno.Text=""AndTxtSname.Text<>""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=TrueThen
Querycondition="select*fromswheresname="&"'"&Trim(TxtSname.Text)&"'"&"andssex="&"'"&Trim(OptSsex
(1).Caption)&"'"
EndIf
IfTxtSno.Text<>""AndTxtSname.Text<>""AndOptSsex(0).Value=TrueAndOptSsex
(1).Value=FalseThen
Querycondition="select*fromswheresno="&"'"&Trim(TxtSno.Text)&"'"&"andsname="&"'"&Trim(TxtSname.Text)&"'"&"andssex="&"'"&Trim(OptSsex(0).Caption)&"'"
EndIf
IfTxtSno.Text<>""AndTxtSname.Text<>""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=TrueThen
Querycondition="select*fromswheresno="&"'"&Trim(TxtSno.Text)&"'"&"andsname="&"'"&Trim(TxtSname.Text)&"'"&"andssex="&"'"&Trim(OptSsex
(1).Caption)&"'"
EndIf
AdodcODBC.RecordSource=Querycondition
AdodcODBC.Refresh
Case1‘数据插入操作
Fori=3To5
Label1(i).Enabled=True
ComboDate(i-3).Enabled=True
Nexti
IfTxtSno<>""AndTxtSname<>""And(OptSsex(0).ValueOrOptSsex
(1).Value)Then
Rst.Find"sno='"&Trim(TxtSno.Text)&"'"
IfRst.EOFThen
Rst.AddNew
Rst.Fields(0)=Trim(TxtSno.Text)
Else
Rst.MoveFirst
MsgBox"学号不允许重复,请重填!
",vbOKOnly,"系统提示"
ExitSub
EndIf
Rst.Fields
(1)=Trim(TxtSname.Text)
Fori=0To1
IfOptSsex(i).ValueThen
Rst.Fields
(2)=Trim(OptSsex(i).Caption)
EndIf
Nexti
IfComboDate(0).Text="年"ThenComboDate(0).Text=ComboDate(0).List(0)
IfComboDate
(1).Text="月"ThenComboDate
(1).Text=ComboDate
(1).List(0)
IfComboDate
(2).Text="日"ThenComboDate
(2).Text=ComboDate
(2).List(0)
Rst.Fields(3)=Trim(ComboDate(0).Text)&"-"&Trim(ComboDate
(1).Text)&"-"&Trim(ComboDate
(2).Text)
Rst.Update
AdodcODBC.RecordSource=StrRst
AdodcODBC.Refresh
Else
MsgBox"数据信息填写不完整,请重填!
",vbOKOnly,"系统提示"
ExitSub
EndIf
'Rst.MoveFirst
Case2‘数据删除操作
Label1
(1).Enabled=False
TxtSname.Enabled=False
Fori=3To5
Label1(i).Enabled=False
ComboDate(i-3).Enabled=False
Nexti
IfTxtSno.Text=""AndOptSsex(0).Value=FalseAndOptSsex
(1).Value=FalseThen
MsgBox"未给定删除条件!
",vbOKOnly,"系统提示"
ExitSub
EndIf
IfTxtSno.Text<>""And(OptSsex(0).ValueOrOptSsex
(1).Value)Then
MsgBox"此操作不能基于多条件进行,请重设条件!
",vbOKOnly,"系统提示"
TxtSno.Text=""
Fori=0To1
OptSsex(i).Value=False
Nexti
ExitSub
EndIf
IfTxtSno.Text<>""Then
Rst.MoveFirst
Rst.Find"sno='"&Trim(TxtSno.Text)&"'"
IfRst.EOFThen
IfRst.BOFThen
MsgBox"当前数据表为空!
",vbOKOnly,"系统提示"
ExitSub
Else
Rst.MoveFirst
EndIf
MsgBox"该学号记录不存在,请重填!
",vbOKOnly,"系统提示"
ExitSub
Else
Rst.Delete
EndIf
EndIf
IfOptSsex(0).ValueThen
Do
Rst.MoveFirst
Rst.Find"ssex='"&Trim(OptSsex(0).Caption)&"'"
IfRst.EOFThen
IfRst.BOFThen
MsgBox"当前数据表为空!
",vbOKOnly,"系统提示"
ExitSub
Else
Rst.MoveFirst
EndIf
MsgBox"没有男生记录信息,请重填!
",vbOKOnly,"系统提示"
ExitSub
Else
Rst.Delete
EndIf
Rst.MoveNext
LoopUntilRst.EOF
EndIf
IfOptSsex
(1).ValueThen
Do
Rst.MoveFirst
Rst.Find"ssex='"&Trim(OptSsex
(1).Caption)&"'"
IfRst.EOFThen
IfRst.BOFThen
MsgBox"当前数据表为空!
",vbOKOnly,"系统提示"
ExitSub
Else
Rst.MoveFirst
EndIf
MsgBox"没有女生记录信息,请重填!
",vbOKOnly,"系统提示"
ExitSub
Else
Rst.Delete
EndIf
Rst.MoveNext
LoopUntilRst.EOF
EndIf
AdodcODBC.RecordSource=StrRst
AdodcODBC.Refresh
Case3‘数据修改操作
FrameCond.Enabled=False
CallDataGridQuery_AfterUpdate
Case4‘操作条件复原与设置操作
FrameCond.Enabled=True
Fori=0To5
Label1(i).Enabled=True
Nexti
TxtSno.Enabled=True
TxtSname.Enabled=True
Fori=0To1
OptSsex(i).Value=False
Nexti
Fori=0To2
ComboDate(i).Enabled=True
Nexti
EndSelect
EndSub
五、实验内容:
在学习、理解、掌握好以上数据库操作实例后,完成如下实验内容:
利用ODBC(OpenDataBaseConnection)数据访问方式,对教材第80页所示数据库中的零件数据表P实现数据的查询、插入、删除及修改操作,并且要求数据的查询操作功能要包括对WEIGHT属性列的求和统计查询。
注意:
数据库可直接利用实验一所建立的数据库,不必重新创建。
六、实验总结:
可视化面向对象程序设计语言均为程序开发人员提供了多种数据库的访问方式,本实验现实过程中主要用到了ODBC数据接口来现实应用软件对SQL数据库的数据访问。
请同学们实验后考虑:
①怎样利用ADO(ActiveXDataObject)对象来现实应用软件对SQL数据库的数据访问;②怎样利用DATA控件、ODBC数据接口、ADO对象来现实应用软件对Access数据库的数据访问。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 通过 ODBC 方式 访问 数据库