在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     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...