PetaPoco使用@符号插入字符串

3

我想执行一行类似于以下的SQL语句:

conn.Open();
var db = new PetaPoco.Database(conn);
var sql = "INSERT INTO FOO (name) VALUES ( 'foo@bar.com')";
var response = db.Execute(sql);

问题在于 PetaPoco 把 @bar 当成了一个参数。有没有一种方法可以告诉它不要特殊对待任何@符号?我的超级糟糕的解决方法是用 "at" 替换 "@" 。我为此感到羞耻。
2个回答

5

"你做错了"™

为了避免SQL注入攻击和其他拼接字符串的问题,你应该使用参数:

var response = db.Execute("INSERT INTO FOO (name) VALUES (@0)", "foo@bar.com");

虽然方法不正确,但至少可以工作:

var response = db.Execute("INSERT INTO FOO (name) VALUES ('foo@@bar.com')", 

2

您需要使用两个@字符来转义它。我认为这样应该可以:

var sql = "INSERT INTO FOO (name) VALUES ( 'foo@@bar.com')"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接