我想在表格的字段中插入字符串'xxx'xxx'。' 字符中的问题。我怎样才能插入这个字符?
问问题
827 次
3 回答
4
您需要复制单引号:
insert into foo (col_name)
values
('xxx''xxx');
但是你应该研究一下准备好的语句,它不仅可以让这样的事情变得更容易,而且还可以保护你免受 SQL 注入(我不懂 C#,所以我无法帮助你了解细节)。
于 2013-02-18T14:14:42.640 回答
1
single quote
如果您直接插入,则加倍,
INSERT INTO tableName (colName) VALUES ('xxx''xxx')
但如果您在 上执行此操作C#
,请使用参数化查询。
string connStr = "connection String here";
string val = "xxx'xxx";
string query = "INSERT INTO tableName (colName) VALUES (:val)";
using(NpgsqlConnection conn = new NpgsqlConnection(connStr))
{
using(NpgsqlCommand comm = new NpgsqlCommand())
{
comm.Connection = conn;
comm.CommandText = query;
NpgsqlParameter p = new NpgsqlParameter("val", NpgsqlDbType.Text);
p.value = val;
comm.Parameters.Add(p);
try
{
conn.Open();
comm.ExecuteNonQuery();
}
catch(NpgsqlException e)
{
// do something with
// e.ToString();
}
}
}
于 2013-02-18T14:16:43.283 回答
1
在c#中,如果要插入单引号,可以通过替换原始值来做到这一点:
string x = "xxx'xxx";
string replacedText = x.Replace("'","''");
并且在插入以防止 sql 注入时始终使用参数:
myCommand.CommandText = "INSERT INTO TableName (x) VALUES (@x)";
myCommand.Parameters.Add("@x", x);
于 2013-02-18T14:20:21.033 回答