【问题标题】:Issue with Large sql query in asp.net webpagesasp.net 网页中的大型 sql 查询问题
【发布时间】:2017-11-07 19:37:51
【问题描述】:

您好希望有人可以提供帮助。

我正在尝试呈现我正在使用 ASP.NET WEBpages(不是 WebForms 或 MVC)的所有产品 url 的列表。

但如果数据库查询超过一定数量的记录,它会给我以下错误。

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:无法执行 空引用上的运行时绑定

如果我输入 SQL 查询 Top 500,它工作正常。

我的数据库查询

var db = Database.Open("MyConnectionString");
var Products = "SELECT Top 500* FROM shop_products WHERE site_id = '99' AND product_active = 'Y' ORDER BY product_name ASC";

我以前可以在 Classic ASP 中执行此操作。

asp.net 中的 SQL 查询大小可能存在限制,如果是,我该如何解决。

帮助

【问题讨论】:

  • 你的数据库有多少条记录
  • 是否尝试在连接字符串中添加“连接超时”?
  • 您好,只有大约 1500 种产品需要致电。
  • 真的吗?哪一行代码抛出了那个异常?您是否将此 SQL 的结果绑定到特定控件(如果是,该代码在哪里?)
  • 我猜你绑定的一些数据在一个或多个记录中是 null(至少是 dbnull),并且绑定会引发异常

标签: c# sql asp.net asp.net-webpages


【解决方案1】:

错误消息中的关键短语是“无法对 null 引用执行运行时绑定”。

我怀疑“shop_products”表中的前 500 行没有具有 NULL 值的列值。这就是为什么选择有效而没有“前 500 名”限定符的选择无效的原因。

您的代码需要检测 DBnull 值并为这些情况分配一个默认值或进行某种错误处理以避免此运行时错误。

【讨论】:

    【解决方案2】:

    为了解决这个问题,我将其拆分为更小的 SQL 查询,并按类别拆分出产品所在的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      相关资源
      最近更新 更多