PetaPoco INSERT with @ in the string

PetaPoco INSERT with @ in the string

我想执行一行 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" 替换“@”。我生活在这种耻辱中。

您需要使用两个@字符进行转义。我认为这应该有效:

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

"You are doing it wrong"™

为避免 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')",