1

我想在表格的字段中插入字符串'xxx'xxx'。' 字符中的问题。我怎样才能插入这个字符?

4

3 回答 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 回答