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 + "'";
这句有误,改成
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]括起来的。-------(承德石油计控班小俊呵呵)
其中from后面的表名要用[denglu]括起来的。-------(承德石油计控班小俊呵呵)
#5
Debug就很清楚,问题出在哪
#6
可能是密码里头含有要转义的特殊字符,比如&, ', ", \之类的。
楼主不要用SQL拼接的方式来执行SQL查询,对这类参数,要使用setParameter, addParameter等动态绑定的方式设定变量。
一定听说过SQL注入之类的问题吧。
楼主不要用SQL拼接的方式来执行SQL查询,对这类参数,要使用setParameter, addParameter等动态绑定的方式设定变量。
一定听说过SQL注入之类的问题吧。
#7
把 SQL 打印出来就知道错误了,用户名前多了个=号,and 前面少了个空格
#8
#9
楼主问题解决没有?
#1
string str1 = "update denglu set 登录密码='" + textBox3.Text + "' where
=用户名='" + name + "'";
这句有误,改成
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]括起来的。-------(承德石油计控班小俊呵呵)
其中from后面的表名要用[denglu]括起来的。-------(承德石油计控班小俊呵呵)
#5
Debug就很清楚,问题出在哪
#6
可能是密码里头含有要转义的特殊字符,比如&, ', ", \之类的。
楼主不要用SQL拼接的方式来执行SQL查询,对这类参数,要使用setParameter, addParameter等动态绑定的方式设定变量。
一定听说过SQL注入之类的问题吧。
楼主不要用SQL拼接的方式来执行SQL查询,对这类参数,要使用setParameter, addParameter等动态绑定的方式设定变量。
一定听说过SQL注入之类的问题吧。
#7
把 SQL 打印出来就知道错误了,用户名前多了个=号,and 前面少了个空格
#8
#9
楼主问题解决没有?