我想执行一行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是一个参数。有没有办法告诉它不要特别对待任何@?我的超级蹩脚的工作是取代" @"与"在"。我生活在这种耻辱中。
答案 0 :(得分:2)
“你做错了”™
为了避免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')",
答案 1 :(得分:1)
你需要使用两个@字符来逃避它。我认为这应该有效:
var sql = "INSERT INTO FOO (name) VALUES ( 'foo@@bar.com')"