我正在使用SqlBuilder构建一个动态sql语句,其中SELECT和WHERE子句各不相同。查询构建如下:
SqlBuilder sb = new SqlBuilder();
sb.SELECT("id, name");
sb.FROM("products");
sb.WHERE("name LIKE {0}", new object[] { "a%" });
一旦我准备好了SqlBuilder,我想得到原始的sql语句。但是,ToString()方法返回的字符串可能如下所示:
SELECT id,name FROM products WHERE name LIKE {0}
我需要带有参数设置的原始sql,即:
SELECT id,name FROM products WHERE name LIKE'a%'
是否可以使用DbExtensions SqlBuilder?
答案 0 :(得分:1)
您需要调用ToCommand传递提供者工厂或连接实例,例如:
DbCommand command = query.ToCommand(SqlClientFactory.Instance);
在v6中,您必须使用数据库:
var db = new Database();
IDbCommand command = db.CreateCommand(query);
答案 1 :(得分:0)
DbExtensions帮助页面包含以下代码:
var query = new SqlBuilder()
.SELECT("*")
.FROM("Products")
.WHERE("Name LIKE {0}", "A%")
这与你的不同。 (我知道这种方法有params object[]
作为签名,但是params并不一定按你的想法工作。)改变你的WHERE以匹配他们的。