テーブルのフィールドに文字列 ' xxx'xxx ' を挿入したいと考えています。'文字の問題。この文字を挿入するにはどうすればよいですか?
質問する
827 次
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 に答える