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')",
我想执行一行 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')",