【问题标题】:Get raw sql statement with DbExtensions SqlBuilder使用 DbExtensions SqlBuilder 获取原始 sql 语句
【发布时间】:2014-11-28 11:31:56
【问题描述】:

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

【问题讨论】:

  • 你能展示你目前的代码吗?
  • 这个SqlBuilder是哪里来的?没关系 - DbExtensions。

标签: c# sql sqlbuilder dbextensions


【解决方案1】:

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

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

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

var db = new Database();
IDbCommand command = db.CreateCommand(query);

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 2023-01-17
      • 2012-08-06
      • 2010-09-17
      相关资源
      最近更新 更多