用vs2005做的简单系统 有一个修改密码的页面 修改密码点提交时显示失败 在数据库里却已经改过来了 是怎么回事呀
估计是你在数据库操作完之后,在代码获取数据处理结果时候的逻辑判断错了。
你数据库内容都更新了。。显示更新失败,那估计是你逻辑判断有误了、、
数据库操作时候的逻辑判断有误,仔细检查代码看看,关键是if条件判断
检查你的代码,说不定你把成功修改后的提示写成了修改失败了,如果实在检查不出来,就贴出你的代码吧,有代码有真相
数据库改过来了,说明数据库操作是对的
显示失败,说明判断的逻辑可能有错误或遗漏
把判断的逻辑部分贴出来看看
应该是逻辑判断有误,把这部分代码贴出来,方便大家给你找错呀!
可能是session的原因,如果你没有及时提交按钮,
session超时,session对象被清空,if判断失效。
还有commandText应该用parameter构造,以防
sql inject危险。
Response.Write("<script>alert('原始密码不正确!');location.href='studMain.aspx'</script>");
没有必要在数据访问层里进行判断吧,在表示层就可以了呀,或者是用验证控件进行处理。
还有就是可以是你的逻辑错误,你可以设置断点进行追踪。
cmd.ExecuteNonQuery();返回受影响的行数
cmd.ExecuteScalar();返回结果集第一行第一列
你第一列ID不会是0吧?还有哪个.Tostring()一下
第一:你的命名该注意一下了
第二:数据处理,业务逻辑,前台操作,分层比较好.
第三:你是根据用户名,修改密码的么?
这一句错了Convert.ToInt32(cmd.ExecuteScalar()) > 0
应该用Convert.ToInt32(cmd.ExecuteNonQuery()) > 0
两者区别:
ExecuteNonQuery 已重写。 对连接执行 Transact-SQL 语句并返回受影响的行数。
ExecuteScalar 已重写。 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。
另外你的程序写的时候,最好符合缩进规则,
另外,你程序中最好不要直接写Commad命令字符串,不安全,小心注入攻击。
可以考虑在数据库端用存储过程,一个是灵活些,便于修改,二个安全性好些
来源:英超直播