使用DbExtensions SqlBuilder获取原始sql语句

时间:2014-11-28 11:31:57

标签: c# sql sqlbuilder dbextensions

我正在使用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?

2 个答案:

答案 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以匹配他们的。