【问题标题】:Microsoft jet skips 90 records微软喷气机跳过了 90 条记录
【发布时间】:2017-05-19 04:43:56
【问题描述】:

我有一个包含 5000 条记录的数据库。我有前 1000 个顺利使用。然而,接下来的 90 条记录,JET 司机似乎无缘无故地跳过了这些。

我不确定这是什么原因。我不认为问题出在我的 SQL 命令上。但是,如果有的话,我会在这里发布。注意:我知道为 sql 命令添加字符串不是一个好主意,但我只能通过这种方式使其工作。

string queryTest = "Select Serial_Number FROM serialNumbers WHERE Is_Used=false AND (In_Progress=false OR Accessed_Time_Stamp < #" + testTime.ToString() + "#);";

如果有任何方法可以将testTime.ToString() 替换为@time,然后致电setCommand.Parameters.AddWithValue("@time", testTime.ToString());,请告诉我。到目前为止,这一直在抛出异常。

回到主要问题。因此,JET 跳过的这个组有 90 条记录。我不确定为什么,我想知道这里是否有人知道可能导致这种情况的原因。

我还应该提到,我最近将此表与另一个表合并,以创建 5000 条记录。是的,这个问题发生在合并发生的前 90 个号码上。另外,ID 从 1000 跳到 1002。不确定这是否会产生任何影响,但我想提一下。

另外,我正在用 C# 编写代码。

【问题讨论】:

  • 您确定它们被完全跳过,还是它们只是乱序?您在查询中没有指定顺序,如果您只是以某种方式合并它们,它们很容易出现故障。
  • 在数据库中,它们的顺序是正确的。这是我创建的一个 MS Access 数据库,我可以在 MS Access 中查看该数据库。我在前一组 100 上使用此查询命令进行测试,它能够毫无问题地获取序列号。虽然,这可能是因为 100 的顺序是从 1 到 100。但是我查看了当前数据库的 ID,它也是按 ID 排序的

标签: c# sql ms-access


【解决方案1】:

我认为您看到的问题是,尽管数据库按顺序显示数字,但可能存在内部引用导致序列号被无序引用。正如 DancingFool 所建议的,当您请求序列号时,您应该确保有一个 ORDER BY 操作来对数据库进行排序。试试这个代码:

string queryTest = "Select Serial_Number FROM serialNumbers WHERE Is_Used=false AND (In_Progress=false OR Accessed_Time_Stamp < #" + testTime.ToString() + "#) ORDER BY ID ASC;";

【讨论】:

    【解决方案2】:

    您可以通过声明您的 SQL 语句来添加参数:

    PARAMETERS AccessTimeStampParam DateTime;
    SELECT Serial_Number
      FROM serialNumbers
     WHERE Is_Used = false
       AND (In_Progress = false OR Accessed_Time_Stamp < [AccessTimeStampParam]);
    

    然后为AccessTimeStampParam参数传入一个值。

    【讨论】:

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