来自OrmLite's documentation:
默认情况下 OrmLite 不使用参数化 SQL。只有对所有 SQL 操作使用参数化语句的 API,这些都用 Param 后缀标识,例如:
参数化写操作
db.InsertParam(new Person { FirstName = "Jimi", LastName = "Hendrix", Age = 27})
db.UpdateParam(new Person { FirstName = "Jimi", LastName = "Hendrix", Age = 27})
db.DeleteByIdParam<Person>(1)
Parameterized Read operations
var people = db.SelectParam<Person>(q => q.Age == 27)
var person = db.GetByIdParam<Person>(1)
//Existing parameterized query API's
var people = db.Where<Person>(new { FirstName = "Jimi", Age = 27 })
var people = db.Query<Track>("FirstName = @name and Age = @age",
new { name = "Jimi", age = 27 })
此外,包含 Query 或 Where 字样的选择方法也使用参数化 SQL(其他选择方法不)。传递到 Where 的匿名类型被视为 AND 过滤器。
var track3 = db.Where<Track>(new { AlbumName = "Throwing Copper", TrackNo = 3 })
查询语句使用来自提供的匿名类型(如果有)的属性接受参数化 SQL
var track3 = db.Query<Track>(
"select * from Track Where AlbumName = @album and TrackNo = @trackNo",
new { album = "Throwing Copper", trackNo = 3 })
在它执行之后(不是之前),你可以得到 Last SQL 语句生成的:
db.GetLastSql()