0

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

4

2 回答 2

1

您需要通过提供者工厂或连接实例调用 ToCommand,例如:

DbCommand command = query.ToCommand(SqlClientFactory.Instance);

在 v6 中,您必须使用数据库:

var db = new Database();
IDbCommand command = db.CreateCommand(query);
于 2014-12-13T16:36:11.387 回答
0

DbExtensions 帮助页面包含以下代码:

var query = new SqlBuilder()
   .SELECT("*")
   .FROM("Products")
   .WHERE("Name LIKE {0}", "A%")

这和你的不一样。(我知道该方法具有params object[]签名,但参数不一定按您的想法工作。)更改您的 WHERE 以匹配他们的。

于 2014-11-28T14:18:00.020 回答