c#为什么这段代码密码修改成功但数据库没更新呢。。求助大虾们了。。。

suners 2008-12-16 09:18:48
string strQuery = "SELECT COUNT (*) FROM Admin Where ID='"+ID +"' and Pwd='" + tbpwd.Text + "' and username ='" + this.tbname.Text + "'";
SqlCommand cmd = new SqlCommand(strQuery, conn);
if ((int)cmd.ExecuteScalar() > 0)//修改密码之前先查询原始密码是否正确
{
if (tbnewpwd.Text == tbsure.Text)//两次密码是否相等
{

cmd = new SqlCommand("update Admin set username ='" + this.tbname.Text + "',pwd ='" + this.tbpwd.Text + "' where ID='" + this.txtid.Text + "' ", conn);

int count =Convert.ToInt32( cmd.ExecuteNonQuery());

if (count > 0)
{
MessageBox.Show("密码修改成功");
}
else
{
MessageBox.Show("密码修改失败");
return;

}


}
else
{
MessageBox.Show("两次密码输入不一致!");

return;
}
conn.Close();
}
}
...全文
354 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
restart184 2011-04-29
  • 打赏
  • 举报
回复
您好,我借用您的代码了,可是我的和您出现的问题一样啊,请您指导

string connnectionString = Properties.Settings.Default.SuperMarketConnectionString;
SqlConnection conn = new SqlConnection(connnectionString);
conn.Open();
SqlCommand cmd = new SqlCommand("select count(*) from PepTable where 用户姓名='" + UserForm.mystring + "'and 用户密码='" + oldpassagetextBox.Text + "' ", conn);
if ((int)cmd.ExecuteScalar() > 0)//修改密码之前先查询原始密码是否正确
{

if (newpassage1textBox.Text == newpassage2textBox.Text)
{

cmd = new SqlCommand( "update PepTable set 用户密码='" + newpassage2textBox.Text.ToString() + "' where 用户姓名='" + UserForm.mystring + "'",conn);//conn为上面的连接;

int count = Convert.ToInt32(cmd.ExecuteNonQuery());

if (count > 0)
{
MessageBox.Show("密码修改成功!", "消息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("密码修改失败");
return;

}

}
else
{
label14.Visible = true;
label14.Text = "您两次输入的密码不一样!";
return;
}
}
else
{
oldpassagetextBox.Text = "";
label13.Visible = true;
label13.Text = "您输入的密码不正确!";
return;
}
conn.Dispose();
}
xuexiaopo 2009-03-14
  • 打赏
  • 举报
回复
学习学习,新手
  • 打赏
  • 举报
回复
都没分了。。。
q704174307 2008-12-16
  • 打赏
  • 举报
回复
where ID='" + this.txtid.Text + "'
ID是int格式的吧
如果像你这样赋值进去就变成id='1'而不是我们要的id=1
所以把id的''去掉
suners 2008-12-16
  • 打赏
  • 举报
回复
恩多谢这位大侠了 好了 把分全布送给你 [Quote=引用 20 楼 Old_Mouse 的回复:]

[/code]
string strQuery = "SELECT COUNT (*) FROM Admin Where ID='"+ID +"' and Pwd='" + tbpwd.Text + "' and username ='" + this.tbname.Text + "'";

C# code

[code=C#]
cmd = new SqlCommand("update Admin set username ='" + this.tbname.Text + "',pwd ='" + this.tbpwd.Text + "' where ID='" + this.txtid.Text + "' ", conn);



第一句查询的密码怎么和第二句修改的密码都是this.tbpwd.Text?应该…
[/Quote]

flyjimi 2008-12-16
  • 打赏
  • 举报
回复
查询和更新的参数都一样的,改了跟没改一样。
Old_Mouse 2008-12-16
  • 打赏
  • 举报
回复
[/code]
string strQuery = "SELECT COUNT (*) FROM Admin Where ID='"+ID +"' and Pwd='" + tbpwd.Text + "' and username ='" + this.tbname.Text + "'";


[code=C#]
cmd = new SqlCommand("update Admin set username ='" + this.tbname.Text + "',pwd ='" + this.tbpwd.Text + "' where ID='" + this.txtid.Text + "' ", conn);

第一句查询的密码怎么和第二句修改的密码都是this.tbpwd.Text?应该是tbnewpwd.Text吧。
suners 2008-12-16
  • 打赏
  • 举报
回复
na 应该怎么该
zhyuanshan 2008-12-16
  • 打赏
  • 举报
回复
楼主的新用户名密码和旧用户名密码都是用这两个this.tbname.Text,this.tbpwd.Text,那有更新和没更新有什么分别呢?当然不会改变数据库的值了
suners 2008-12-16
  • 打赏
  • 举报
回复
yun晕死了 都调式有值输出 怎么数据库立标就没更新
jummy_lin 2008-12-16
  • 打赏
  • 举报
回复
使用事物,并且要提交。
Commit 很重要啊,怎么能把它给忘了呢?
eyu660 2008-12-16
  • 打赏
  • 举报
回复
疑问:你这里所说的“密码修改成功”是什么意思?按照我们的理解,这里的“成功”就代表数据库的内容按预期的结果执行了,即已经更新了。可你又说“数据库没更新”,让人有点摸不着头脑。
不过可以先给些建议:1. 如果你的“ID”值是数值类型,则不要加'(即单引号).
2. 把你的ID值设为主键,因为有时数据库没有主键的话不能执行“插入,修改”操作。
3. 尽量避免“Admin”等这种有关键字嫌疑的变量名,有时会引起不可预料的后果。
journeydj 2008-12-16
  • 打赏
  • 举报
回复
1,开事务没有提交。
2,更新错库了。
mengpaihuai 2008-12-16
  • 打赏
  • 举报
回复
你是把用户名也一起给修改了。你可以把用户名删除了。其实修改密码没有那么复杂,在此,我给你一个示例,做参考:
#region 修改用户管理信息
/// <summary>
/// 修改用户密码信息
/// </summary>
/// <param name="username">用户名称</param>
/// <param name="userpwd">用户密码</param>
/// <param name="userpower">用户权限</param>
public void UpdateUserManage(string username, string userpwd, int userpower)
{
OleDbConnection strcon = DataConn();
OleDbCommand cmd = new OleDbCommand("update tb_UserManage set userPwd=@userPwd,userPower=@userPower where userName=@userName", strcon);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@userPwd", OleDbType.VarChar, 50).Value = userpwd;
cmd.Parameters.Add("@userPower", OleDbType.Integer).Value = userpower;
cmd.Parameters.Add("@userName", OleDbType.VarChar, 50).Value = username;
strcon.Open();
cmd.ExecuteNonQuery();

cmd.Dispose();
strcon.Close();
strcon.Dispose();
}
#endregion
devilli 2008-12-16
  • 打赏
  • 举报
回复
你设下断点,把你的sql-update语句截下,复制到查询分析器执行下,看看结果如何
jinjazz 2008-12-16
  • 打赏
  • 举报
回复
既然你的iCount大于0,肯定更新成功了,你确定你连接的数据库没有搞错?
HDNGO 2008-12-16
  • 打赏
  • 举报
回复
SQL语句打印出来,查询分析器里搞吧搞吧~
HDNGO 2008-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jinjazz 的回复:]
近身剪
[/Quote]

刺客?
wartim 2008-12-16
  • 打赏
  • 举报
回复
看错了,有的
wangruibaobei 2008-12-16
  • 打赏
  • 举报
回复
update Admin set username ='" + this.tbname.Text + "',pwd ='" + this.tbpwd.Text + "' where ID='" + this.txtid.Text, 知道这sql是什么意思吧
加载更多回复(6)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧