为什么不能修改密码?

sd2125190 2003-12-16 10:52:10
做简单学生管理系统中,在修改密码中出了问题,为什么不能实现?
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String
Dim DB As String
DB = App.Path & "\students.mdb"
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB
SQL = "select * from 登录表 where 密码='" & login.password.Text & "'"
rs.Open SQL, conn, adOpenStatic, adLockOptimistic
If rs.RecordCount > 0 Then
If Text1.Text = Text2.Text Then

rs!密码 = Text1.Text
rs.Update
Else
MsgBox "修改密码和确认密码不一致!"
Text1.Text = ""
Text2.Text = ""
End If
End If
End Sub
//login.password.text是登录窗口的文本
...全文
43 点赞 收藏 22
写回复
22 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
SoHo_Andy 2003-12-16
rs.Find "密码='" & login.password.Text & "'"

这句不用,如果代码执行了,记录肯定改了啊

没有任何错误提示么
回复
sd2125190 2003-12-16
但是还是不对,记录没有改
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String
Dim DB As String
DB = App.Path & "\students.mdb"
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB
SQL = "select * from 登录表 where 密码='" & login.password.Text & "'"
rs.Open SQL, conn, adOpenDynamic, adLockOptimistic
If Not rs.EOF And Not rs.BOF Then

If Text1.Text = Text2.Text Then
rs.Find "密码='" & login.password.Text & "'"
rs.Fields("密码") = Text2.Text
rs.Update
Unload Me
Else
MsgBox "修改密码和确认密码不一致!"
Text1.Text = ""
Text2.Text = ""
End If
End If
回复
sd2125190 2003-12-16
谢谢了
回复
SoHo_Andy 2003-12-16
adOpenDynamic和adOpenStatic都是游标类型
动态和静态的区别

静态类型返回的记录集已经脱离和数据库的实时联系
动态的记录集,在用户更改、新增等操作时会自动反应到数据库端去

动态占用的资源要多于静态,所以查询用静态就行,更新要使用动态游标
回复
sd2125190 2003-12-16
为什么要改为adOpenDynamic,请解释一下两者的区别和怎么使用它?
是不是文本型要加',其它类型不要加?
谢谢!
回复
pennyzhueng 2003-12-16
up
回复
SoHo_Andy 2003-12-16
如果密码是数字型的,这句修改
SQL = "select * from 登录表 where 密码=" & login.password.Text & ""

另外不使用If rs.RecordCount > 0 Then 来判断是否存在记录

使用 if not rs.eof and not rs.bof then 来判断

另外rs.Open SQL, conn, adOpenStatic, adLockOptimistic 改为

rs.Open SQL, conn, adOpenDynamic, adLockOptimistic

回复
sd2125190 2003-12-16
为什么?
回复
SoHo_Andy 2003-12-16
呵呵,你的代码根本没有向数据库写啊,当然不可能添加到数据库

另外,你还是重开一贴吧,这个太长了
回复
sd2125190 2003-12-16
我意思是添加、保存后,记录没有添加到数据库中
回复
SoHo_Andy 2003-12-16
你保存中什么都没有做啊
也没有条件查询,你说没有记录是什么意思

学生年级数据表中是没有数据,而且你的代码有错误

改正如下
Dim SQL_grade As String
Dim SQL_information As String
Dim DB As String
DB = App.Path & "\students.mdb"
'学生年级表
SQL_grade = "select * from 学生年级"
If conn.State = 1 Then
conn.Close
End If
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DB
rs_grade.Open SQL_grade, conn, adOpenDynamic, adLockOptimistic
'学生信息表
MsgBox rs_grade.RecordCount
SQL_information = "select * from 学生信息表"
rs.Open SQL_information, conn, adOpenStatic, adLockOptimistic
MsgBox rs.RecordCount
cmdAdd.Enabled = True
cmdSave.Enabled = False
回复
sd2125190 2003-12-16
还有个问题:在“学生年级”表中按“保存”,为什么数据库中没有记录?这是为什么?
回复
sd2125190 2003-12-16
我收到了,谢谢你啊!麻烦你了
回复
SoHo_Andy 2003-12-16
已经发回给你了,按照我的代码就可以了
回复
sd2125190 2003-12-16
是啊,主键查找怎么做?
回复
jhzhou882 2003-12-16
应该说清楚什么错误.
从代码上看这句话有问题
SQL = "select * from 登录表 where 密码='" & login.password.Text & "'"
login.password.Text 是密码吧
你应该用主键查找(ID或者用户名因为密码可能重复)
回复
sd2125190 2003-12-16
对不起,我是一名初学者有些看不懂,你说的话太专业了,是不是密码表中没有设主键啊?
我还没有收到
hooligan00011@hotmail.com
回复
SoHo_Andy 2003-12-16
已经发送给你了

你修改密码的时候缺少主键值,因为你引用的控件的资源已经回收了
回复
sd2125190 2003-12-16
到底错在哪里?
回复
sd2125190 2003-12-16
hooligan00011@163.com
谢谢你
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告