PetaPoco INSERT与字符串中的@

时间:2017-11-03 19:02:11

标签: tsql petapoco

我想执行一行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是一个参数。有没有办法告诉它不要特别对待任何@?我的超级蹩脚的工作是取代" @"与"在"。我生活在这种耻辱中。

2 个答案:

答案 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')"