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直接挿入する場合は2 倍、

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 に答える