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]也都不行。
这是怎么回事?恳请各位求教,谢谢!
展开
 我来答
翾翳嬿
2013-02-06 · TA获得超过423个赞
知道小有建树答主
回答量:190
采纳率:66%
帮助的人:257万
展开全部
where 语句有错误,user 是系统关键字,如果你当作了表名称或者字段名称要使用[ ]包裹。你把含where那句代码改成:
DBcom.CommandText = "update tbUser set password = '" + newPass + "' where [user] = '" + readName + "'";//注意 [user]
还有如果你拼接sql字符串的话像newPass ,readName 要过滤一下非法字符,比如‘。
追问

我已经把user改为[user]了啊,可还是出现了同样的问题:

怎么回事?且已经确保输入的readName,newPass中无非法字符。


看了2楼的回答,已经明白了,不过同时也要谢谢你的帮助!

追答
要养成一个好的习惯,每个字段表名都加上方括号。
whm412
2013-02-06 · TA获得超过515个赞
知道小有建树答主
回答量:289
采纳率:66%
帮助的人:278万
展开全部
password是access的关键字,改为[password].
看了楼的回答,发现user也是关键字。改为[user]
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sywahlj
2013-02-21 · TA获得超过4935个赞
知道大有可为答主
回答量:2.2万
采纳率:0%
帮助的人:5178万
展开全部
密码访问关键字,而不是[密码] 看着在地板上,答案发现,对用户来说也是关键字。取代[用户名]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式