160 likes | 307 Views
重点难点和错误分析 —— 项目六 学生信息管理系统. 主 讲 : 浙江广播电视大学 虞江锋. 一、数据库概述. 数据库是结构化的相关数据的集合 按一定的结构和组织方式存储在外存储器 数据结构模型 层次模型 网状模型 关系模型:二维表来描述数据之间的关系 数据库管理系统: Access 、 SQL Sever 等. 二、结构化查询语言 SQL. Insert 语句 将数据值添加到表中 Update 语句 修改表中的记录 Delete 语句 从表中删除记录 Select 语句 从表中查询记录. 三、使用 ADO 访问数据库.
E N D
重点难点和错误分析——项目六学生信息管理系统重点难点和错误分析——项目六学生信息管理系统 主 讲 :浙江广播电视大学虞江锋
一、数据库概述 • 数据库是结构化的相关数据的集合 • 按一定的结构和组织方式存储在外存储器 • 数据结构模型 • 层次模型 • 网状模型 • 关系模型:二维表来描述数据之间的关系 • 数据库管理系统:Access、SQL Sever等
二、结构化查询语言SQL • Insert语句 • 将数据值添加到表中 • Update语句 • 修改表中的记录 • Delete语句 • 从表中删除记录 • Select语句 • 从表中查询记录
三、使用ADO访问数据库 • ADO控件通过可视化数据访问控件的形式建立数据库的记录集 • ADO对象模型以代码编程的方式建立数据库的记录集 • 通过数据绑定控件(如DataDrid控件)实现数据信息的访问
三、使用ADO访问数据库 • 使用ADO控件访问数据库的步骤 • 首先将ADO控件添加到工具箱中, • 设置ConnectionString属性建立与数据库的连接 • 设置RecordSource属性指定具体可访问的数据表 • 设置数据绑定控件(如DataDrid控件)的DataSource属性实现数据信息的访问
三、使用ADO访问数据库 • 使用ADO对象模型访问数据库的步骤 • 创建一Connection对象,建立和数据库的连接 • 利用Recordset对象或Command对象为需要操作的数据建立记录集 • 利用Recordset对象的属性、方法和事件来操作数据
三、使用ADO访问数据库 Public Sub Main() Dim Adocn As New Connection '声明并创建新对象 Dim strAccess As String ' 定义数据库连接字符串 strAccess = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=xs.mdb" Adocn.Open strAccess ‘建立数据库连接 End Sub Private Sub Form_Load() Dim Adors As New Recordset '声明一个新的Recordset对象 Adors.ActiveConnection = Adocn '与ADO链接对象建立关联 strSQL = "select * from 学生表" '拼写SQL语句 Adors.Open strSQL '执行SQL语句 Text1.Text=Adors.Fields("学号") '在TextBox控件显示 Adors.Close ‘关闭记录集对象 End Sub
四、常见错误分析 • 数据库文件找不到 • SQL语句出错 • RecordSource属性重新设置后记录集无变化 • 实时错误3021
1、数据库文件找不到 • 原因 • 含有数据库的应用程序拷贝到其他地方,出现找不到文件的错误, • 可能是数据库文件没有拷下来,或程序中数据库的连接采用的是绝对路径
1、数据库文件找不到 • 应用程序文件与数据库文件放在同一文件夹中 • 用ADO控件连接数据库时一定采用相对路径。 改为XS.mdb
2、SQL语句出错 • 原因 • 由于SQL语句写错,导致程序执行不了。 • 解决方法 • 正确拼写SQL语句 • 将SQL语句用Print方法打印出来调试 • 检查是否漏写“’”、或少了空格、或少了“’”
3、 RecordSource属性重新设置后记录集无变化 • 数据控件的RecordSource属性重新设置后,数据控件连接的数据源还是原来的记录集。 strSQL = "select * from 学生表 where 学号='" + txtNo.Text + "'" Adodc1.RecordSource = strSQL Adodc1.Refresh '必须用Refresh方法激活这些变化
4、实时错误3021 • 运行时报错:实时错误3021,BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录
4、实时错误3021 • 原因 • 数据记录指针指向了空记录 • 解决方法: • 可以使用BOF和EOF属性来解决 • 如果记录没有到头,那么将记录移到上一条 • 如果是第一条记录,则提示用户记录已经移到第一条 • 如果记录没有到尾,那么将记录移到下一条 • 如果记录到尾,则提示用户记录已经移到最后一条
If ADOrs.BOF = False ADOrs.MovePrevious Else MsgBox "已经是最前面一条了!", vbOKOnly, "提示“ End if If ADOrs.EOF = False ADOrs.MoveNext Else MsgBox "已经是最后一条了!", vbOKOnly, "提示" End if