C# 连接access数据库 用来修改密码 ~~求大神指教!!

时间:2022-12-20 13:34:56
可以运行 但是输入密码的时候总是报错 
 private void button1_Click(object sender, EventArgs e)
        {

            string connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
            connection += @"D:\Backup\我的文档\Visual Studio 2010\110.mdb";

            OleDbConnection conn = new OleDbConnection(connection);
            conn.Open();
            if (textBox1.Text != "")
            {
                string name = textBox1.Text;
                string mima = textBox2.Text;
                OleDbCommand mycomm = new OleDbCommand("select count(*) from denglu where 用户名 = '" + name + "'and 登陆密码 ='" + mima  + "'", conn);

                string zzzh;
                zzzh = mycomm.ExecuteScalar().ToString();

                if (zzzh =="0") ///根据设断点 对zzzh的跟踪 发现如果存在数据 则返回1 所以这里是0而不是null
                {
                    MessageBox.Show("您输入的用户名不存在!");
                    return;

                }
                else////
                {

                    if (textBox3.Text == textBox4.Text)
                    {
                        OleDbConnection con = new OleDbConnection(connection);
                        string str1 = "update denglu set 登录密码='" + textBox3.Text + "' where =用户名='" + name + "'";
                        con.Open();
                        OleDbCommand cmd = new OleDbCommand(str1, conn);
                        int count = cmd.ExecuteNonQuery();//密码为文本类型
                        ////int i = cmd.ExecuteNonQuery();////执行SQL,返回一个整型变量,如果SQL是对数据库的记录进行操作,那么返回操作影响的记录条数
                        con.Close();////语法错误 (操作符丢失) 在查询表达式 '=用户名='user1'' 中

                        if (count == 1)
                        {
                            MessageBox.Show("修改密码成功!", "提示");
                        }
                        else
                        {
                            MessageBox.Show("修改密码失败!");
                        }
                    }
                    else
                    {
                        MessageBox.Show("两次密码输入不一致!","提示");
 
                    }
                }

            }
            else
            {
                MessageBox.Show("用户名不能为空!", "提示");
            }


            conn.Close();
        }
    }

9 个解决方案

#1


string str1 = "update denglu set 登录密码='" + textBox3.Text + "' where  =用户名='" + name + "'";
这句有误,改成
string str1 = "update denglu set 登录密码='" + textBox3.Text + "' where 用户名='" + name + "'";

#2


改过了 还是错误啊~~

#3


断点调试,看一下str1的实际内容是什么。

#4


呵呵 这个错误你都会犯  看看你要查询的表名称  OleDbCommand mycomm = new OleDbCommand("select count(*) from denglu where 用户名 = '" + name + "'and 登陆密码 ='" + mima  + "'", conn);
 其中from后面的表名要用[denglu]括起来的。-------(承德石油计控班小俊呵呵)

#5


Debug就很清楚,问题出在哪

#6


可能是密码里头含有要转义的特殊字符,比如&, ', ", \之类的。
楼主不要用SQL拼接的方式来执行SQL查询,对这类参数,要使用setParameter, addParameter等动态绑定的方式设定变量。

一定听说过SQL注入之类的问题吧。

#7


把 SQL 打印出来就知道错误了,用户名前多了个=号,and 前面少了个空格

#8


该回复于2013-11-04 08:25:10被管理员删除

#9


楼主问题解决没有?

#1


string str1 = "update denglu set 登录密码='" + textBox3.Text + "' where  =用户名='" + name + "'";
这句有误,改成
string str1 = "update denglu set 登录密码='" + textBox3.Text + "' where 用户名='" + name + "'";

#2


改过了 还是错误啊~~

#3


断点调试,看一下str1的实际内容是什么。

#4


呵呵 这个错误你都会犯  看看你要查询的表名称  OleDbCommand mycomm = new OleDbCommand("select count(*) from denglu where 用户名 = '" + name + "'and 登陆密码 ='" + mima  + "'", conn);
 其中from后面的表名要用[denglu]括起来的。-------(承德石油计控班小俊呵呵)

#5


Debug就很清楚,问题出在哪

#6


可能是密码里头含有要转义的特殊字符,比如&, ', ", \之类的。
楼主不要用SQL拼接的方式来执行SQL查询,对这类参数,要使用setParameter, addParameter等动态绑定的方式设定变量。

一定听说过SQL注入之类的问题吧。

#7


把 SQL 打印出来就知道错误了,用户名前多了个=号,and 前面少了个空格

#8


该回复于2013-11-04 08:25:10被管理员删除

#9


楼主问题解决没有?