实验5 数据库编程
一、实验目的
1、掌握Visual Basic的基本操作,如创建工程、窗体,添加控件、部件和引用等。
2、掌握ActiveX DataObjects(简称ADO)数据控件连接SQL Server数据库的方法。
3、掌握ADO数据对象连接SQL Server数据库的方法。
4、掌握VB控件与ADO数据控件的绑定方法。
5、掌握ODBC数据源创建方法,使用ODBC数据源驱动ADO数据控件的方法。
二、实验环境
1、安装SQL Server2000的计算机,数据库中已经建立了Studentsdb数据库,数据库中建立了Student、Course、SC、Teacher和Dept五个数据表,并在数据表中输入了一些数据。
2、安装了Visual Basic 6.0企业版开发环境。
三、实验内容与步骤
1、选择Windows的“开始”→“程序”→“Microsoft Visual Basic6.0中文版”菜单项,启动Visual Basic程序。在“新建工程”对话框中,选择“标准EXE”图标来创建工程1。
2、在工程1的属性窗口中,将工程名称“工程1”修改为student。选择窗体form1,将form1的名称修改为frmCourse。
3、选择“工程”→“student属性”菜单项,打开“工程属性”对话框,可以修改工程名称和启动对象,如图所示8-1所示。
4、在窗体frmCourse的右侧form1的属性窗口中,修改Caption属性为“课程录入”。
图8-1 “工程属性”对话框
5、在窗体frmCourse中添加标签和文本框。选择VB窗口左侧工具箱的“”图标,在frmCourse添加标签控件Label1,修改Caption属性值为“姓名”。选择工具箱的“”图标,添加文本框控件Text1,如图8-2所示。
6、在窗体frmCourse添加如图8-2所示所示的按钮控件。从左侧的工具箱中添加命令按钮到frmCourse中,修改Caption属性为“确认”,按钮名称属性为cmdOK。同样,再添加两个按钮,分别将按钮名称修改为cmdCancel和cmdExit,Caption属性修改为“取消”和“退出”。
7、双击cmdOK按钮,打开代码窗口,在cmdOK_click()事件中输入以下代码。
Private Sub cmdOK_Click()
MsgBox "此课程已录入,请重新输入"
End Sub
同样操作,分别在cmdCancel、cmdExit按钮的Click事件中输入以下代码。
Private Sub cmdCancel_Click()
MsgBox "取消刚才的操作", , "信息"
End Sub
Private Sub cmdExit_Click()
MsgBox "退出窗口", 1
Unload frmCourse
End Sub
选择“运行”→“启动”菜单项,运行显示窗体frmCourse,比较3个按钮单击时显示的信息窗口的差别。
8、使用ADO数据控件创建数据绑定控件与数据提供者之间的连接,访问SQL Server。
(1)添加ADO数据控件到工具箱。选择“工程”→“部件”菜单项,在“部件”对话框中选择“Microsoft ADO Data Control 6.0(OLEDB)”项前面的复选框,工具箱将增加一个控件按钮Adodc“”。
(2)在工程student中新建一个窗体,命名为frmQuery,修改Caption属性为课程查询。
(3)在窗体frmQuery中添加ADO数据控件Adodc1,并建立与SQL Server 的连接。
单击Adodc1的属性窗口的ConnectionString属性右边的按钮,在ConnectionString属性对话框中单击“使用连接字符串”右侧的“生成”按钮,出现如图8-3所示的“数据链接属性”对话框。选择“OLE DB提供程序”的Microsoft OLE Provider for SQL Server项。
图8-3 “数据链接属性”对话框
单击“下一步”按钮,在“数据链接属性”对话框的“连接”选项卡中确定“输入登录服务器的信息”为“使用Windows NT集成安全设置”项,“在服务器上选择数据库”确定SQL Server上的数据库为studentsdb,如图8-4所示。
图8-4 “数据链接属性”对话框的“连接”选项卡
单击“测试连接”按钮,显示测试成功,表明ADO数据控件与SQL Server 数据库studentsdb建立了连接,如图8-5所示,连接字符串已填空在“使用连接字符串”编辑框中。
图8-5 ConnectionString属性对话框
(4)确定Adodc1数据控件的记录源为curriculum表。单击Adodc1的RecorderSource右边的按钮,在RecordSource的属性对话框中选择“记录源”的“命令类型”为“2-adCmdTable”,选择“表或存储过程名称”为curriculum,如
图8-6所示。
图8-6 RecordSource的属性对话框
(5)在窗体frmQuery中添加3个Label控件和TextBox控件,方法如实验内容5所示,各控件属性如表8-1所示,控件Text1、Text2、Text3与Adodc1数据源的各字段进行了绑定。
窗体frmQuery添加控件后布局如图8-7所示。
要运行窗体frmQuery,需要修改工程student属性的启动对象为frmQuery。
窗体frmQuery运行时,单击Adodc1控件的按钮,可以使curriculum表的记录前后移动,图8-7中记录已移动到第4条记录。
图8-7 窗体frmQuery布局
9、按实验内容8所示方法,建立student_info、grade表的查询窗体,通过ADO数据控件连接数据、控制记录的移动,并在窗体中增加按钮来控制窗体的退出(参考实验内容6)。
10、使用ActiveX数据对象ADO访问SQL Server。在工程引用中添加ADO数据对象。选择“工程”→“引用”菜单项,选择“Microsoft ActiveX Data Objects 2.6 Library”项前面的复选框。
ADO的对象名为ADODB,使用Connection和Recordset对象直接访问数据。从SQL Server获取数据的步骤是:
(1)创建连接对象CourseCon,使用以下代码定义在窗体frmCourse的声明部分。
Dim CourseCon As New ADODB.Connection
(2)窗体frmCourse载入时,打开Connection对象,使用连接字符串连接数据库。
Private Sub Form_Load()
CourseCon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=studentsdb"
CourseCon.Open
End Sub
11、在工程student的窗体frmCourse上,添加表8-1中所列控件,但不能与Adocdc1绑定。修改cmdOK按钮的Caption属性值为“新增”,保存窗体录入的信息到表curriculum中。cmdCancel按钮清除窗体当前的信息。
“新增”按钮cmdOK的代码为
Private Sub cmdOK_Click()
Dim rs As New ADODB.Recordset
Set rs = CourseCon.Execute("select * from curriculum where 课程编号= '" + Text1.Text + "'")
If rs.BOF Then
Set rs = CourseCon.Execute("Insert into curriculum(课程编号,课程名称,学分) values('" + Text1.Text + "','" + Text2.Text + "'," + Text3.Text + ")")
Else
MsgBox "此课程已录入,请重新输入"
End If
Set rs = Nothing
cmdCancel_Click
End Sub
当窗体输入的信息不正确时,要删除重新输入,使用cmdCancel按钮实现此功能,其代码为
Private Sub cmdCancel_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
MsgBox "取消输入的操作", , "信息"
End Sub
在cmdOK按钮的代码中使用了cmdCancel_Click事件,是为了在程序运行过程中调用cmdCancel按钮的单击操作所执行的代码,来完成窗体信息的消除。
在窗体退出时,应关闭数据连接CourseCon。
Private Sub Form_Unload(Cancel As Integer)
CourseCon.Close
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
将student工程属性的“启动对象”设置为frmCourse,以便直接运行frmCourse窗体。
运行时,分别输入课程编号为0001和0009的记录,查看是否能插入到
curriculum表中。
12、参考实验内容10、11所示方法,建立student_info、grade表的录入记录窗体,通过ADO数据对象ADODB控制数据的插入。
13、使用ODBC连接studentsdb数据库。
(1)打开Windows控制面板,双击控制面板中“管理”→“ODBC数据源”图标,打开“ODBC数据源管理器”对话框,选择“文件DSN”项。
(2)单击“添加”按钮,在“创建数据源”对话框中选择服务器驱动程序为“SQL Server”,单击“下一步”按钮,如图所示。在弹出的对话框的数据源名称编辑框中输入:
C:\Program Files\Common Files\ODBC\Data Sources\stODBC.dsn
(3)单击“下一步”按钮。在“创建到SQL Server的新数据源”对话框中,输入SQL Server的服务器名称,选择“使用网络登录ID的Windows NT验证”,“更改默认的数据库”为studentsdb,如图所示。
(4)在“ODBC Microsoft SQL Server安装”对话框中,单击“测试数据源”按钮,进行ODBC数据源测试,显示“测试成功”信息窗口,如图所示。
在“ODBC数据源管理器”对话框中可以看到添加的文件DSN为stODBC.dsn,如图8-8所示。
图8-8 添加stODBC.dsn为文件DSN
14、通过VB控件使用ODBC。
在工程student中添加窗体frmStui,Caption属性为“学生信息浏览”,在窗体中添加表8-2所列的控件。
窗体frmStui的控件布局如图8-9所示。
图8-9 窗体frmStui的控件布局
其中,DataGrid表格控件不在工具箱中,选择“工程”→“部件”菜单项打开“部件”对话框,添加“Microsoft DataGrid Control 6.0 (OLEDB)”项。
Adodc数据控件的连接字符串的提供程序选择“Microsoft OLE DB Provider for ODBC Drivers”项,在“数据源属性”对话框的“连接”选项卡中“编译”,“测试连接”。
运行frmStui窗体,显示如图8-10所示学生信息表格浏览窗口。
图8-10 学生信息表格浏览窗口
15、设计窗体frmGrade,使用ODBC驱动数据库,显示学生成绩浏览窗口。
16、设计查询窗体frmQryGrade,在文本框输入学生姓名,可以查出该名学生的所有课程编号及成绩,使用DataGrid控件显示学生所修课程编号及成绩数据。
提示:(1)参考实验内容11,通过记录集对象执行查询语句获取学生姓名所对应的学号。
(2)DataGrid控件的数据源使用Adodc控件Adodc1,其RecordSource属性为查询语句。初始数据源为查询语句
Adodc1.RecordSource = “select * from grade”
当输入学生姓名并进行查询时,其数据源修改为:
Adodc1.RecordSource = "select * from grade where 学号= '" & stName + "'"
参考:
在frmQryGrade窗体中添加表8-3所列的控件,并设置相应的属性值。
输入如下代码:
Dim stName As String
Dim stCon As New ADODB.Connection
Private Sub cmdQry_Click()
Dim rs As ADODB.Recordset
Set rs = stCon.Execute("select * from student_info where 姓名= '" & Text1.Text + "'")
If Not rs.BOF Then
stName = rs("学号")
Else
stName = " "
End If
Adodc1.RecordSource = "select * from grade where 学号= '" & stName + "'"
Adodc1.Refresh
End Sub
Private Sub Form_Load()
stCon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=studentsdb"
stCon.Open
End Sub
Private Sub Form_Unload(Cancel As Integer)
stCon.Close
End Sub
17、实验思考
(1)使用实验内容介绍的数据连接方法,建立并修改student表中的数据窗体,要求既可以浏览记录,又可以保存记录的修改数据等功能。
(2)在实验内容16的基础上,输入学生姓名,查询该名学生的课程名称及对应成绩。