在SQL查询中转义值(带有SQL连接器的C#)

我知道我可以使用参数,但是什么是转义字符串序列的正确方法? 查询可能是这样的:

"INSERT INTO records (ReferenceID,Name,Note,Author) VALUES ('" + ID+ "','" + addlevel.textBox1.Text + "','"+addlevel.textBox2_note.Text+ "','"+Program.Username+"')"; 

我只是好奇,只想知道:)

编辑:那怎么样? “CREATE TABLE”+ string“….参数不能在这里使用!

如果需要执行数据库操作(如创建表),则应使用SQL Server管理对象而不是执行SQL字符串。

对于CRUD操作,参数绝对是唯一的真实路径。

更新:似乎MySQL客户端库包含一个帮助这种不明智的任务的方法。 您可以调用MySqlHelper.EscapeString(string)。

正确的方法使用参数。

“只是说不”试图逃避自己 – 这很容易出错。 为什么你认为你想要手动转义它们而不是使用参数?

如果你真的,真的,真的需要自己逃避(在你的例子中没有迹象):

 string EncodeMySqlString(string value) { return value.Replace(@"\", @"\\").Replace("'", @"\'") } 

我认为你唯一需要做的就是value = value.Replace("'", "''")

当然你不应该这样做,但你知道。

编辑:显然这对MySQL来说都是错误的。 它应该适用于PostgreSQL,MS SQL和Oracle。

改用commnd参数。 它需要自己逃避。 这也是针对sql注入的解决方案。