如何解决在C#中使用MSSQL CE时出现错误,无法弄清原因,
|| 我在插入MSSQL CE数据库时遇到问题,locCon.Open();
SqlCeCommand locCmd = locCon.CreateCommand();
locCmd.CommandText = \"INSERT INTO user (ID,FName,LName,Email) VALUES(\'\"+this.id+\"\',\'\"+this.fName+\"\',\'\"+this.lName+\"\',\'\"+this.email+\"\')\";
locCmd.ExecuteNonQuery();
运行时我得到
解析查询时出错。 [令牌行编号= 1,令牌行偏移量= 13,令牌错误=用户]
现在,我看不到查询有什么问题,尽管这是示例使用的MS SQL SQL Server的ives。这有什么明显的问题吗?
谢谢
解决方法
我认为\“用户\”是数据库中的保留字。尝试替换此:
INSERT INTO user (ID,FName,LName,Email) VALUES (
有了这个:
INSERT INTO [user] (ID,Email) VALUES (
(我认为它是MSSQL CE的方括号,因为它是用于其他MSSQL引擎的。)
方括号基本上告诉查询引擎,“这是数据库中对象的标识符。”它们通常用于包装包含空格的数据库对象的名称,因为否则它们将无法正确解析。但这对于保留字的对象也很有用。
, 您可能需要在用户部分周围放置方括号,如下所示:
INSERT INTO [用户]
这是因为用户可以是保留字。将[]保留在SQL中的保留字周围可以将它们用作字段和表名。
另一个要点是,您正在从某些文本输入中构建查询。这使您容易受到SQL注入攻击。为避免这种情况,我强烈建议您改用Sql Parameters来防止这种情况。看到这个链接:
http://msdn.microsoft.com/en-us/library/ff648339.aspx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。