我知道我可以使用参数,但是什么是转义字符串序列的正确方法? 查询可以是这样的:
"INSERT INTO records (ReferenceID,Name,Note,Author) VALUES ('" + ID+ "','" + addlevel.textBox1.Text + "','"+addlevel.textBox2_note.Text+ "','"+Program.Username+"')";
我只是好奇,只想知道:)
编辑: 那怎么样? “CREATE TABLE”+ string“......参数不能在这里使用!
答案 0 :(得分:16)
如果需要执行数据库操作,例如创建表,则应使用SQL Server Management Objects而不是执行SQL字符串。
对于CRUD操作,参数绝对是唯一的真实路径。
更新:似乎MySQL客户端库包含一个帮助这种不明智的任务的方法。您可以调用MySqlHelper.EscapeString(string)。
答案 1 :(得分:14)
正确的方式 使用参数。
“Just Say No”试图逃避自己 - 这很容易出错。为什么你认为你希望手动转义它们而不是使用参数?
答案 2 :(得分:7)
如果你真的,真的,真的需要自己逃避(在你的例子中没有迹象):
string EncodeMySqlString(string value) {
return value.Replace(@"\", @"\\").Replace("'", @"\'")
}
答案 3 :(得分:0)
我认为您唯一需要做的就是value = value.Replace("'", "''")
当然你不应该这样做,但你知道。
编辑:显然这对MySQL来说完全没错。它应该适用于PostgreSQL,MS SQL和Oracle。
答案 4 :(得分:0)
use commnd parameters instead. It takes care of escaping itself. It's the solution also against sql injections.