0

如果我想插入一个包含引号的语句,怎么可能?

例如,我有一个文本框,然后输入:

Future Swami Vivekananda’s grand father's name was "____" .
4

3 回答 3

7

如果您使用正确的参数化语句,则无需担心。像这样的东西(尽管请不要向我学习 C# 技术):

string sql = @"UPDATE dbo.table SET col = @p1 WHERE ...;";
string myString = @"hello'foo""bar";

SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = CommandType.Text;
SqlParameter p1 = cmd.Parameters.AddWithValue("@p1", myString);
cmd.ExecuteNonQuery();

(虽然你真的应该使用存储过程。)

如果您正在手动构建字符串(您真的,真的,真的不应该这样做),您需要通过将字符串分隔符加倍来转义它们:

INSERT dbo.tbl(col) VALUES('hello''foo"bar');
于 2012-08-23T18:03:12.327 回答
4

使用参数化查询 - 然后引号根本不重要。此外 - 您的数据库不会被 SQL 注入接管 - 所以真的是双赢。

于 2012-08-23T18:04:18.450 回答
0

你可以加倍报价:

INSERT INTO table
VALUES ('Future Swami Vivekananda''s grand father''s name was "____"')
于 2012-08-23T18:04:59.360 回答