c#:连接Access数据库操作时update语句的问题。
我的程序代码如下:publicboolmodify(stringreadName,stringnowPass,stringnewPass){using(OleDbConn...
我的程序代码如下:
public bool modify(string readName, string nowPass, string newPass)
{
using (OleDbConnection DBcon = new OleDbConnection(str))
{
using (OleDbCommand DBcom = new OleDbCommand())
{
if (DBcon.State == ConnectionState.Closed)
{
DBcon.Open();
}
DBcom.Connection = DBcon;
DBcom.CommandType = CommandType.Text;
DBcom.CommandText = "select * from tbUser where user = '" + readName + "' and password = '" + nowPass + "'";
OleDbDataReader DBreader = DBcom.ExecuteReader();
DBreader.Read();
if (!DBreader.HasRows)
{
DBreader.Close();
return false;
}
else
{
DBreader.Close();
DBcom.Connection = DBcon;
DBcom.CommandType = CommandType.Text;
DBcom.CommandText = "update tbUser set password = '" + newPass + "' where user = '" + readName + "'";
DBcom.ExecuteNonQuery();
return true;
}
}
}
}
这是一个修改用户密码的自定义方法,此程序中我在对Access数据库进行连接、查询、插入、删除操作都没问题,但这里的update语句却出现问题,IDE说是update语句语法错误,但是我在一个新程序里专门测试了一下update语句却成功了,这里却始终无法正确运行。我还试过将update后面的数据表名tbUser改为[tbUser]也都不行。
这是怎么回事?恳请各位求教,谢谢! 展开
public bool modify(string readName, string nowPass, string newPass)
{
using (OleDbConnection DBcon = new OleDbConnection(str))
{
using (OleDbCommand DBcom = new OleDbCommand())
{
if (DBcon.State == ConnectionState.Closed)
{
DBcon.Open();
}
DBcom.Connection = DBcon;
DBcom.CommandType = CommandType.Text;
DBcom.CommandText = "select * from tbUser where user = '" + readName + "' and password = '" + nowPass + "'";
OleDbDataReader DBreader = DBcom.ExecuteReader();
DBreader.Read();
if (!DBreader.HasRows)
{
DBreader.Close();
return false;
}
else
{
DBreader.Close();
DBcom.Connection = DBcon;
DBcom.CommandType = CommandType.Text;
DBcom.CommandText = "update tbUser set password = '" + newPass + "' where user = '" + readName + "'";
DBcom.ExecuteNonQuery();
return true;
}
}
}
}
这是一个修改用户密码的自定义方法,此程序中我在对Access数据库进行连接、查询、插入、删除操作都没问题,但这里的update语句却出现问题,IDE说是update语句语法错误,但是我在一个新程序里专门测试了一下update语句却成功了,这里却始终无法正确运行。我还试过将update后面的数据表名tbUser改为[tbUser]也都不行。
这是怎么回事?恳请各位求教,谢谢! 展开
3个回答
展开全部
where 语句有错误,user 是系统关键字,如果你当作了表名称或者字段名称要使用[ ]包裹。你把含where那句代码改成:
DBcom.CommandText = "update tbUser set password = '" + newPass + "' where [user] = '" + readName + "'";//注意 [user]
还有如果你拼接sql字符串的话像newPass ,readName 要过滤一下非法字符,比如‘。
DBcom.CommandText = "update tbUser set password = '" + newPass + "' where [user] = '" + readName + "'";//注意 [user]
还有如果你拼接sql字符串的话像newPass ,readName 要过滤一下非法字符,比如‘。
追答
要养成一个好的习惯,每个字段表名都加上方括号。
展开全部
password是access的关键字,改为[password].
看了楼的回答,发现user也是关键字。改为[user]
看了楼的回答,发现user也是关键字。改为[user]
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
密码访问关键字,而不是[密码] 看着在地板上,答案发现,对用户来说也是关键字。取代[用户名]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询