当前位置:文档之家› 数据库编程

数据库编程

数据库编程
数据库编程

实验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的基础上,输入学生姓名,查询该名学生的课程名称及对应成绩。

相关主题
文本预览
相关文档 最新文档