学生信息管理系统(三)更新数据时,不正当输入是如何使数据被删除的
2013-08-23 08:44
429 查看
以更新班级信息为例子来我们说明更新数据的功能是如何实现的。
过程段如下:
1.首先是保证当前窗体下的mcclean为false才能对数据进行更新(mcclean的false,true对当前窗体的控制可以自己设定)。
2.检查数据的输入,和数据的添加功能无太大差别。
3.在数据库中删除当前显示的记录。
4.检查输入的数据是否和数据库中数据是否冲突(主键)。
5.冲突则从新输入,相反则添加数据到数据库中。
部分代码如下:
正常情况下操作是不会出错的。但当我们不正当输入时错误就出现了。
比如在教室:的输入12345678910
当单机更新时则会显示如下的错误,调试时出现在数据添加进数据库过程中出错了。
而当输入的数字不超过10时,数据能添加成功。在代码和窗体中没有对数字的限制,则可能出现的错误在与数据库对该字段的输入有要求。打开数据库查看我们可以看到数据库中要求classroom_No的字符不能超过10个。所以当我们输入的字符超过10个之后数据添加不成功。
报错后退出程序,在打开时原有记录已经被删除了,
因为我们在检测到输入不为空后,就删除了当前显示的记录。然后检测主键是否冲突,在添加进库的过程中出错了,在出错前记录已经被删除了。
假设我们去掉mrc.Delete这句话,意思就是更新数据时当前显示的记录不被删除,当修改教室后单击更新按钮,显示“班号已经,请重新输入”。 除非修改主键(而且和库中的不能相同)才能显示更新数据成功。但结果是对原来要修改的记录没有进行修改,而是有添加了一个新记录。
解决的办法:
根据输入的数据定义合理的数据类型(存储空间可以设的稍微大一点)。
过程段如下:
1.首先是保证当前窗体下的mcclean为false才能对数据进行更新(mcclean的false,true对当前窗体的控制可以自己设定)。
2.检查数据的输入,和数据的添加功能无太大差别。
3.在数据库中删除当前显示的记录。
4.检查输入的数据是否和数据库中数据是否冲突(主键)。
5.冲突则从新输入,相反则添加数据到数据库中。
部分代码如下:
Private Sub updateCommand_Click() Dim txtSQL As String Dim MsgText As String Dim mrcc As ADODB.Recordset If mcclean = True Then 'mcclean的默认属性为真,弹出对话框,无法对数据进行更新。 MsgBox "请先修改班级信息", vbOKOnly + vbExclamation, "警告" Exit Sub End If 。。。。。。。。。。。。。。。。 If Not Testtxt(txtClassroom.Text) Then MsgBox "请输入教室号码!", vbOKOnly + vbExclamation, "警告" txtClassroom.SetFocus Exit Sub End If '完成信息的检测,保证输入不为空 mrc.Delete '删除当期显示的记录 txtSQL = "select * from class_Info where class_No = '" & Trim(txtClassno.Text) & "'" Set mrcc = ExecuteSQL(txtSQL, MsgText) ' 检查是否和数据库中数据存在的信息冲突(即是否有相同信息) If mrcc.EOF = False Then MsgBox "班号重复,请重新输入!", vbOKOnly + vbExclamation, "警告" mrcc.Close txtClassno.SetFocus Else mrcc.Close '不冲突的话添加修改的信息 mrc.AddNew mrc.Fields(0) = Trim(txtClassno.Text) mrc.Fields(1) = Trim(comboGrade.Text) mrc.Fields(2) = Trim(txtDirector.Text) mrc.Fields(3) = Trim(txtClassroom.Text) mrc.Update 。。。。。。。。。。。 mcclean = True End If End Sub
正常情况下操作是不会出错的。但当我们不正当输入时错误就出现了。
比如在教室:的输入12345678910
当单机更新时则会显示如下的错误,调试时出现在数据添加进数据库过程中出错了。
而当输入的数字不超过10时,数据能添加成功。在代码和窗体中没有对数字的限制,则可能出现的错误在与数据库对该字段的输入有要求。打开数据库查看我们可以看到数据库中要求classroom_No的字符不能超过10个。所以当我们输入的字符超过10个之后数据添加不成功。
报错后退出程序,在打开时原有记录已经被删除了,
因为我们在检测到输入不为空后,就删除了当前显示的记录。然后检测主键是否冲突,在添加进库的过程中出错了,在出错前记录已经被删除了。
假设我们去掉mrc.Delete这句话,意思就是更新数据时当前显示的记录不被删除,当修改教室后单击更新按钮,显示“班号已经,请重新输入”。 除非修改主键(而且和库中的不能相同)才能显示更新数据成功。但结果是对原来要修改的记录没有进行修改,而是有添加了一个新记录。
解决的办法:
根据输入的数据定义合理的数据类型(存储空间可以设的稍微大一点)。
相关文章推荐
- 学生信息管理系统之查询数据信息
- 学生信息管理系统之数据类型错误
- 学生信息管理系统-数据结构课程设计
- Python备份文件、文件版本的学生管理系统如何实现(将数据保存在txt文件中)
- 数据结构课程设计论文--学生信息管理系统
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统?
- 数据结构课程设计——学生信息管理系统
- 小整理-学生管理系统加强版.连接数据库(并通过键盘输入存放学生信息到数据库)
- 数据结构课程设计—学生信息管理系统
- 数据结构课程设计-学生各方面信息管理系统
- 通过学习学生信息管理系统软件,C程序中,如何设计和编写一个应用系统
- 如何在LIstView中实现复杂的数据(学生管理系统)
- 数据结构课程设计【学生信息管理系统(烟大版)】
- 数据结构课程设计---学生信息管理系统
- Python初识函数、闰年判断函数,水仙花数、学生信息管理系统、函数实现输入某年某月某日,判断这一天是这一年的第几天
- 数据结构课程设计——学生信息管理系统
- 数据结构课程设计-学生信息管理系统
- 数据结构课程设计——学生信息管理系统
- MVC框架——学生信息管理系统(多表,多事务如何处理,一个用户如何共用一个Connection连接)
- 数据结构课程设计---学生信息管理系统