sql server-使用MSSQL CE在C#中出错,并且可以';我不明白为什么,

本文关键字:为什么 明白 MSSQL 使用 server- CE 出错 sql | 更新日期: 2023-09-27 17:58:51

我在插入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。我看到mysql和msssql的语法完全相同,无论如何都可以插入。这有什么明显的问题吗?

感谢

sql server-使用MSSQL CE在C#中出错,并且可以';我不明白为什么,

我认为"user"是数据库中的一个保留字。尝试替换此:

INSERT INTO user (ID,FName,LName,Email) VALUES (

这个:

INSERT INTO [user] (ID,FName,LName,Email) VALUES (

(我认为它是MSSQLCE的方括号,因为它是用于其他MSSQL引擎的。)

方括号基本上告诉查询引擎,"这是数据库中对象的标识符。"它们通常用于包装包含空格的数据库对象的名称,因为否则这些对象将无法正确解析。但它也适用于保留字对象。

您可能需要在用户部分周围加上括号,如下所示:

插入[用户]

这是因为用户可以是一个保留字。将[]放在SQL中的保留字周围可以将它们用作字段和表名。

另一个要点是,您正在从一些文本输入构建查询。这会使您面临SQL注入攻击。为了避免这种情况,我强烈建议您改用Sql参数,这有助于防止这种情况的发生。请参阅此链接:

http://msdn.microsoft.com/en-us/library/ff648339.aspx