0

我如何才能将数据输入"John's shoe"到 SQL Server CE 表(3.5 版)中,因为插入语句等不接受在语句中使用撇号,例如以下语句:

INSERT INTO ShowsDB(Item) VALUES('+ "John's shoes" + "')
4

2 回答 2

7

基本上,您必须避免将数据直接放入 SQL 中。改用参数化 SQL:

// I'm assuming you're opening the connection already
string sql = "INSERT INTO ShowDB(ITEM) VALUES (@Name)";
using (var command = new SqlCommand(sql, connection))
{
    command.Parameters.Add("@Name", SqlDbType.NVarChar).Value = "John's shoes";
    command.ExecuteNonQuery();
}

使用参数化 SQL 有三个好处:

  • 避免SQL 注入攻击
  • 避免不必要和危险的字符串转换(尤其是日期/时间类型)
  • 将“代码”(SQL)与数据(参数)分开,使其更易于理解
于 2013-07-02T20:03:50.807 回答
0

标准 SQL 转义是引号应该加倍,因此您的查询变为

INSERT INTO ShowsDB(Item) VALUES('+ "John''s shoes" + "')

对于诸如针对数据库副本运行 SELECT 语句以诊断问题之类的事情来说,这非常好,但绝不应该在实际生产系统中使用。参数化查询是您的朋友。

于 2013-07-02T20:05:34.043 回答