【问题标题】:Query returning rows in SQLServer but returns no row in VB.Net app查询在 SQLServer 中返回行但在 VB.Net 应用程序中不返回任何行
【发布时间】:2017-02-28 01:16:51
【问题描述】:

我的 VB.Net 应用程序有一个大问题: 我有一个在 SSMS 中完美运行的查询,返回 16 行。 但是当我尝试在我的 VB.Net 应用程序中执行它时,我没有行。 这是我的代码,可以完美地填充我的 VB.Net 应用程序的所有其他 DataTable(超过 200 个表)。在这种情况下,变量“a_strRequete”包含在 SQLServer 中运行良好的查询,返回 16 行。

 Dim v_rrqAdapteur As SqlDataAdapter
 v_rrqAdapteur = New SqlDataAdapter(a_strRequete, m_cnxSQL)
 v_rrqAdapteur.SelectCommand.CommandTimeout = 900
 v_rrqAdapteur.SelectCommand.CommandType = CommandType.Text
 o_rrqTable = New DataTable
 v_rrqAdapteur.Fill(o_rrqTable)
 v_rrqAdapteur.Dispose()

但是当我在调试中执行此操作时,“v_rrqAdapteur.Fill(o_rrqTable)”行执行时没有任何错误,但没有给我任何行。它让我发疯,因为这种行为没有任何逻辑:如果查询在 SSMS 中返回行,则从 VB.Net 调用时它也必须返回相同数量的行。

唯一有此问题的查询是在 SQLServer 代码中使用“pivot”指令。也许问题出在那个地方?

这是在我的查询中包含枢轴的子查询:

    select id_pk, id_fk, [1.00], [1.25], [1.5]          
    from (
        select 
            id_pk,
            id_fk,
            NumericField,
            h_occ
        from [previous subquery]
    ) As Hpv
    pivot (sum(h_occ) for NumericField in(
        [1.00], [1.25], [1.5]
    )) As Spv

一开始,它是一个存储过程,我已将其集成到我的自定义 DataSet 中。但是当我看到它在我的应用程序中没有返回任何行时,我已经使用这个存储过程的代码在我的代码中像全文查询一样执行它(使用此处显示的代码),它总是不返回任何行。

我只有一台服务器和一个数据库,它包含我需要的所有存储过程、视图和函数,并且只有一个与该数据库的连接。

我的代码中没有使用 CRM。

感谢所有愿意提供帮助的人。

【问题讨论】:

  • 请显示保存从 VB 执行的查询的变量的值以及在 SSMS 上使用的完整查询。
  • 查询是:select * FROM [MyDataBase].[dbo].[MySQLInLineFunction](2017, '08', 10025, 317, 20001178)
  • 好吧,我看到一大块缺少你没有显示对象'm_cnxSQL'的连接。通常使用 ADO.NET,您提供一个连接,确保您可以进入、打开连接、做某事、关闭连接,最佳实践是将这些包装在 USING 块中以确保您也处理引用。你可以假设一个没有用户名和密码的连接需要一个,而服务器基本上是在说:“哇,我不知道你是谁,在我知道你是谁之前我不会和你说话。”
  • 执行查询时,连接“m_cnxSQL”已打开且参数良好。此代码非常适合填充我的应用程序的所有其他表。问题不在这里

标签: sql-server vb.net


【解决方案1】:

所以,我找到了一个解决方案,现在知道这个问题来自哪里:它来自“pivot”指令。

我已经用 sum 子查询的左连接替换了 pivot 指令,它现在可以工作了。

所以,“pivot”指令似乎不能用于从 VB.Net 应用程序执行的查询中。

这很可悲,因为“pivot”指令非常有用且执行速度很快(比对要聚合的每个变量值的左连接快得多)。

有人知道在从 VB.Net 应用程序执行的查询中使用“pivot”指令吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多