winform 程序中设计了个密码修改窗体,点击更新按钮后提示框显示数据更新成功 但实际上数据库中信息并没有改变

.Net技术 码拜 7年前 (2015-05-10) 775次浏览 0个评论

窗体中有:当前用户名显示 this.label_username
                 用户类型选择框cb_UserType
                 旧密码输入框tb_lastPW.Text
                 新密码输入框tb_NewPW.Text.Trim();
                 确认密码框tb_ConNewPW
                  另有两个按钮
想实现的功能是:选择用户类型,接着在旧密码框中输入旧密码,然后输入要修改的新密码和确认密码,当输入旧密码与原旧密码相同并且两次新密码输入一致时实现密码更新(将数据库表中信息更新)。
目前的情况是:能弹出更新成功提示,但数据库中的数据并没有修改。
下面是“确认更新”按钮的事件代码,我刚接触.net不久,真不知道哪里出问题了,分数不多  但望各位大神帮我看下问题出在哪里,小弟万分感谢!

        private void btn_OK_Click(object sender, EventArgs e)
        {
            string lastPW = tb_lastPW.Text.Trim();
            string NewPW = tb_NewPW.Text.Trim();
            string ConNewPW = tb_ConNewPW.Text.Trim();
            if (lastPW == null)
            { MessageBox.Show(“旧密码为空,请重新输入!”, “提示”); }
            else
            {
                if ( lastPW!=Pw.Pwd )
                { MessageBox.Show(“旧密码输入不正确,请重新输入!”, “提示”); }
                else
                {
                    if (NewPW == null)
                    { MessageBox.Show(“新密码为空,请重新输入!”, “提示”); }

                    else
                    {
                        if (ConNewPW ==null )
                        { MessageBox.Show(“确认密码为空,请重新输入!”, “提示”); }
                        else
                        {
                            if (ConNewPW != NewPW)
                            { MessageBox.Show(“两次输入不一致,请重新输入!”, “提示”); }
                            else
                            {
                                string connectString = “Data Source=.;Initial Catalog=FinSystem;User ID=sa;pwd=1992106713”;
                                SqlConnection sqlchange = new SqlConnection(connectString);
                     

                                if (cb_UserType.Text == “管理员”)
                                {
                                    string sqlstr = “update Table_Admin set 密码=””” + ConNewPW + “”” where 登录名=””” + this.label_username.Text + “”””;
                                    sqlchange.Open();
                                    SqlCommand cmd = new SqlCommand(sqlstr, sqlchange);
                                    cmd.ExecuteNonQuery();
                                    MessageBox.Show(“密码修改已成功!”, “提示”);

                                }

                                if (cb_UserType.Text == “普通用户”)
                                {

                                    string sqlstr = “update Table_Users set 密码=””” + ConNewPW + “”” where 登录名=””” + this.label_username.Text + “”””;
                                    sqlchange.Open();
                                    SqlCommand cmd = new SqlCommand(sqlstr, sqlchange);
                                    cmd.ExecuteNonQuery( );
                                    MessageBox.Show(“密码修改已成功!”, “提示”);

                                }

                            }
                            this.Close();

执行insert、update、delete等操作时,

cmd.ExecuteNonQuery()

返回影响的行数,是一个int型的值。
你应该根据影响函数是否大于0(或等于某个确定的数值)来判断是否执行成功,而不是仅仅根据这行代码是否执行来判断成功与否。

单步调试一下,把你的sql语句拿到数据库企业管理器去执行,看是否能执行成功?

引用 1 楼 lovelj2012 的回复:

执行insert、update、delete等操作时,

cmd.ExecuteNonQuery()

返回影响的行数,是一个int型的值。
你应该根据影响函数是否大于0(或等于某个确定的数值)来判断是否执行成功,而不是仅仅根据这行代码是否执行来判断成功与否。

单步调试一下,把你的sql语句拿到数据库企业管理器去执行,看是否能执行成功?

SQL语句没问题,但是为什么就是更新不了数据到数据库呢 是还少了哪些代码吗

引用 2 楼 lucky566 的回复:
Quote: 引用 1 楼 lovelj2012 的回复:

执行insert、update、delete等操作时,

cmd.ExecuteNonQuery()

返回影响的行数,是一个int型的值。
你应该根据影响函数是否大于0(或等于某个确定的数值)来判断是否执行成功,而不是仅仅根据这行代码是否执行来判断成功与否。

单步调试一下,把你的sql语句拿到数据库企业管理器去执行,看是否能执行成功?

SQL语句没问题,但是为什么就是更新不了数据到数据库呢 是还少了哪些代码吗

看你的代码,没什么缺少的东东。
这样,你用企业管理器登录本机数据库,用Profiler监控一下,点击提交按钮,捕捉发送到数据库到SQL语句,然拿语句在FinSystem库看是否能执行?

引用 3 楼 lovelj2012 的回复:
Quote: 引用 2 楼 lucky566 的回复:
Quote: 引用 1 楼 lovelj2012 的回复:

执行insert、update、delete等操作时,

cmd.ExecuteNonQuery()

返回影响的行数,是一个int型的值。
你应该根据影响函数是否大于0(或等于某个确定的数值)来判断是否执行成功,而不是仅仅根据这行代码是否执行来判断成功与否。

单步调试一下,把你的sql语句拿到数据库企业管理器去执行,看是否能执行成功?

SQL语句没问题,但是为什么就是更新不了数据到数据库呢 是还少了哪些代码吗

看你的代码,没什么缺少的东东。
这样,你用企业管理器登录本机数据库,用Profiler监控一下,点击提交按钮,捕捉发送到数据库到SQL语句,然拿语句在FinSystem库看是否能执行?

大神 能说下具体步骤方法吗?小白一枚,不然我又得花大把时间在百度上了

40分
晕~
1、用你的连接字符串里面的用户名、密码登陆sql server企业管理器
2、使用SQL Profiler进行监控(见下图)
3、点击你的程序提交按钮,捕捉提到到数据库的语句
winform 程序中设计了个密码修改窗体,点击更新按钮后提示框显示数据更新成功 但实际上数据库中信息并没有改变
引用 5 楼 lovelj2012 的回复:

晕~
1、用你的连接字符串里面的用户名、密码登陆sql server企业管理器
2、使用SQL Profiler进行监控(见下图)
3、点击你的程序提交按钮,捕捉提到到数据库的语句
winform 程序中设计了个密码修改窗体,点击更新按钮后提示框显示数据更新成功 但实际上数据库中信息并没有改变

嗯嗯 我试试

引用 6 楼 lucky566 的回复:
Quote: 引用 5 楼 lovelj2012 的回复:

晕~
1、用你的连接字符串里面的用户名、密码登陆sql server企业管理器
2、使用SQL Profiler进行监控(见下图)
3、点击你的程序提交按钮,捕捉提到到数据库的语句
winform 程序中设计了个密码修改窗体,点击更新按钮后提示框显示数据更新成功 但实际上数据库中信息并没有改变

嗯嗯 我试试

profiler!这东西确实用,看了里面跟踪到的SQL语句后 发现原来自己在定义“当前用户名显示 this.label_username(你好:+当前用户名)”环节出了问题,多了“你好:”字段;放在数据库里面去添加“where登录名=”你好:+…“肯定就找不到,自然也就更新不了了啊!
最后真心谢谢你哈~~~分数虽然不多(加了你关注,以后有不懂的可能还要叨扰你)


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明winform 程序中设计了个密码修改窗体,点击更新按钮后提示框显示数据更新成功 但实际上数据库中信息并没有改变
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!