更改密码 数据库中有一个usertable表,现在我要修改密码,我写了一段代码,但经过多次的修改还是没有能够完全成功,数据库中的密码还是没有改变。 在修改密码的时候要求输入用户名和原始密码,然后输入两次新密码加以确认。而其还要对各种可能的错误加以提示,如用户名不存在,原始密码不正确,两次输入新密码不相同,以及提示修改成功等等信息。这是基于C/S模式的。 谢谢高手们赐教!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是说你是在一个界面上修改usertable表里的其中一个密码?你给出你大概的代码出来先。 先通过登陆名查询出用户表对应的记录然后取出这条记录的密码与界面上输入的原密码相比,如果不相等,就说报原密码错误如果通过就比较新密码和确认新密码,两者不一致的话也报一个错都通过了你就更新一下这条记录update 表名 set 密码=新密码 where 登录名=当前登录名把我写的代码贴出来,大家帮你看看吧 string uname = textBox4.Text; string pass = textBox1.Text; string connstring=@"server=localhost;Integrated Security=True;Database=ps"; string sql = @"select user_name,pwd_id from usertable where user_name='" + this.textBox1.Text + "'"; SqlConnection conn = new SqlConnection(connstring); SqlCommand cmd = new SqlCommand(sql, conn); string uname = textBox4.Text; string pass = textBox1.Text; try { conn.Open(); SqlDataReader reader=cmd.ExecuteReader(); if(reader.Read()) { uname=reader[1].ToString(); pass=reader[2].ToString(); } reader.Close(); conn.Close(); } catch{} if(uname=="") { MessageBox.Show("对不起,您输入的用户不存在!"); return; } if(pass.Trim()!=this.textBox1.Text) { MessageBox.Show("对不起,用户"+uname+"的密码不正确!"); return; } if(this.textBox2.Text!=this.textBox3.Text) { MessageBox.Show("对不起,您输入的两次密码不一致"); return; } string sql1 = "update usertable set pwd_id='" + this.textBox2.Text + "' where user_name='" + uname + "'"; try { string sql1= "update usertable set pwd_id='" + this.textBox2.Text + "' where user_name='" + uname + "'"; conn.Open(); SqlCommand cmd1 = new SqlCommand(sql1, conn); cmd.ExecuteNonQuery(); conn.Close(); } catch(SqlException er) { if(conn.State==ConnectionState.Open) conn.Close(); MessageBox.Show("无法修改密码!\n"+er.Message); return; } MessageBox.Show("已成功修改密码!");以上就是我写的,如果大家有什么更好的希望不要吝啬哈 !!! SqlCommand cmd1 = new SqlCommand(sql1, conn); cmd.ExecuteNonQuery(); 改为SqlCommand cmd1 = new SqlCommand(sql1, conn); cmd1.ExecuteNonQuery(); 自己写错变量了 变量写错了,以后要小心点。其实你可以定义一个局部的 SqlCommand cmd 变量,那么你就不用重新定义那么多次了。 首先如果数据库里没有匹配的数据的话 不会执行 uname=reader[1].ToString(); pass=reader[2].ToString(); 所以 uname = textBox4.Text; pass= textBox1.Text; 还是等于这样、所以 if(uname=="") { MessageBox.Show("对不起,您输入的用户不存在!"); return; } if(pass.Trim()!=this.textBox1.Text) { MessageBox.Show("对不起,用户"+uname+"的密码不正确!"); return; } 这几句根本没用 ilmerge 合并后的EXE文件如何分解? C# winform 怎么获取登陆后才能进入的网页以提取信息 发个自定义圆形Button(希望对新手有用) 请问如何动态代码创建一个CS文件 用代码动态生成固定格式的DataGridView控件 请问C#中如何编写读取pdf文件内容到页面上? 请教一个目录树的问题 C#中如何开发Web中使用的Excel控件(十万火急,在线等) 水晶报表,急急急...... 如何用vs2008 编写c#程序 web.config文件的配置问题 如何将拖到容器控件上的控件的父对象设置为容器控件中的子控件
你给出你大概的代码出来先。
然后取出这条记录的密码与界面上输入的原密码相比,如果不相等,就说报原密码错误
如果通过就比较新密码和确认新密码,两者不一致的话也报一个错
都通过了你就更新一下这条记录
update 表名 set 密码=新密码 where 登录名=当前登录名
把我写的代码贴出来,大家帮你看看吧
string pass = textBox1.Text;
string connstring=@"server=localhost;Integrated Security=True;Database=ps";
string sql = @"select user_name,pwd_id from usertable where user_name='" + this.textBox1.Text + "'"; SqlConnection conn = new SqlConnection(connstring);
SqlCommand cmd = new SqlCommand(sql, conn);
string uname = textBox4.Text;
string pass = textBox1.Text;
try
{
conn.Open();
SqlDataReader reader=cmd.ExecuteReader();
if(reader.Read())
{
uname=reader[1].ToString();
pass=reader[2].ToString();
}
reader.Close();
conn.Close();
}
catch{}
if(uname=="")
{
MessageBox.Show("对不起,您输入的用户不存在!");
return;
}
if(pass.Trim()!=this.textBox1.Text)
{
MessageBox.Show("对不起,用户"+uname+"的密码不正确!");
return;
}
if(this.textBox2.Text!=this.textBox3.Text)
{
MessageBox.Show("对不起,您输入的两次密码不一致");
return;
}
string sql1 = "update usertable set pwd_id='" + this.textBox2.Text + "' where user_name='" + uname + "'";
try
{
string sql1= "update usertable set pwd_id='" + this.textBox2.Text + "' where user_name='" + uname + "'"; conn.Open();
SqlCommand cmd1 = new SqlCommand(sql1, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
catch(SqlException er)
{
if(conn.State==ConnectionState.Open)
conn.Close();
MessageBox.Show("无法修改密码!\n"+er.Message);
return;
}
MessageBox.Show("已成功修改密码!");以上就是我写的,如果大家有什么更好的希望不要吝啬哈 !!!
cmd.ExecuteNonQuery();
改为
SqlCommand cmd1 = new SqlCommand(sql1, conn);
cmd1.ExecuteNonQuery();
自己写错变量了
SqlCommand cmd 变量,那么你就不用重新定义那么多次了。
pass=reader[2].ToString();
所以 uname = textBox4.Text; pass= textBox1.Text; 还是等于这样、所以 if(uname=="")
{
MessageBox.Show("对不起,您输入的用户不存在!");
return;
}
if(pass.Trim()!=this.textBox1.Text)
{
MessageBox.Show("对不起,用户"+uname+"的密码不正确!");
return;
} 这几句根本没用