asp.net中的update问题
做了一个更改密码的页面,代码如下,运行后提示“UPDATE语句的语法错误”请问问题出在什么地方啊?stringid=TextBox1.Text.ToString();st...
做了一个更改密码的页面,代码如下,运行后提示“UPDATE 语句的语法错误”请问问题出在什么地方啊?
string id = TextBox1.Text.ToString();
string psw = TextBox2.Text.ToString();
string Newpsw = TextBox3.Text.ToString();
OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/mydb.mdb"));
string DrPwd;
string mysql = string.Format("select * from users where userID='{0}'", id);
OleDbCommand myCmd = new OleDbCommand(mysql, myConn);
myCmd.Connection.Open();
OleDbDataReader Dr;
Dr = myCmd.ExecuteReader();
Dr.Read();
DrPwd = Dr["Password"].ToString();
Dr.Close();
myCmd.Connection.Close();
if (DrPwd == psw)
{
string mySQL = string.Format("update users set Password ='"+ Newpsw +"' where userID = '"+ id +"'");
OleDbCommand myCmd2 = new OleDbCommand(mySQL,myConn);
myCmd2.Connection.Open();
myCmd2.ExecuteNonQuery();
myCmd2.Connection.Close();
} 展开
string id = TextBox1.Text.ToString();
string psw = TextBox2.Text.ToString();
string Newpsw = TextBox3.Text.ToString();
OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/App_Data/mydb.mdb"));
string DrPwd;
string mysql = string.Format("select * from users where userID='{0}'", id);
OleDbCommand myCmd = new OleDbCommand(mysql, myConn);
myCmd.Connection.Open();
OleDbDataReader Dr;
Dr = myCmd.ExecuteReader();
Dr.Read();
DrPwd = Dr["Password"].ToString();
Dr.Close();
myCmd.Connection.Close();
if (DrPwd == psw)
{
string mySQL = string.Format("update users set Password ='"+ Newpsw +"' where userID = '"+ id +"'");
OleDbCommand myCmd2 = new OleDbCommand(mySQL,myConn);
myCmd2.Connection.Open();
myCmd2.ExecuteNonQuery();
myCmd2.Connection.Close();
} 展开
3个回答
展开全部
他这句都能通过说明ID也是字符的了
string mysql = string.Format("select * from users where userID='{0}'", id);
=================================================================
你把UPDATE语句改为这个
string mySQL = string.Format("update [users] set [Password] ='{0}' where [userID] = '{1}'",Newpsw,id);
关键是用方括号把 表名 和 字段名 括起来。
但是你这样的SQL语句拼接是不安全的,建议加入 敏感字符 检验。
你的密码也不经过加密,如果在密码或ID的随便一个地方输入有'等敏感字符,你程序还是报错。遇到捣蛋的就是SQL注入了哦
string mysql = string.Format("select * from users where userID='{0}'", id);
=================================================================
你把UPDATE语句改为这个
string mySQL = string.Format("update [users] set [Password] ='{0}' where [userID] = '{1}'",Newpsw,id);
关键是用方括号把 表名 和 字段名 括起来。
但是你这样的SQL语句拼接是不安全的,建议加入 敏感字符 检验。
你的密码也不经过加密,如果在密码或ID的随便一个地方输入有'等敏感字符,你程序还是报错。遇到捣蛋的就是SQL注入了哦
展开全部
string mySQL = string.Format("update users set Password ='"+ Newpsw +"' where userID = '"+ id +"'");
改为:
string mySQL = string.Format("update users set Password ='"+ Newpsw +"' where userID = "+ id );
试试?
改为:
string mySQL = string.Format("update users set Password ='"+ Newpsw +"' where userID = "+ id );
试试?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Password 是 保留字,你不能用"Password"作字段名,改一个就可以了,我试过了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询