Microsoft jet跳过了90条记录

时间:2017-05-19 04:43:57

标签: c# sql ms-access

我有一个包含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#编码。

2 个答案:

答案 0 :(得分:3)

我认为您所看到的问题是,尽管数据库按顺序显示数字,但可能存在导致序列号无序引用的内部引用。正如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;";

答案 1 :(得分:0)

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

;DECLARE @URLS TABLE
(URL VARCHAR
(256
)
,CONTROLLER VARCHAR
(256
)
,[ACTION] VARCHAR
(256
)
)
;INSERT @URLS
( URL
) VALUES
('/Users/Edit/'
)
,
('/Users/'
)
,
('/'
)
,
('/Content/myCss.css'
)
,
('/api/Users/Edit/'
)
,
(
'/api/Users/'
)
,
('/api/'
)
,
('/api/Content/myCss.css'
)
;SELECT
* FROM @URLS
;SELECT URL
,XMLURL
,ELE2
,ELE3
,ELE4
,LEONARD
.CONTROLLER
,LEONARD
.
[ACTION]FROM @URLS U CROSS APPLY
(SELECT CAST
('<ROOT><ELE>'
+REPLACE
(URL
,'/'
,'</ELE><ELE>'
)
+'</ELE></ROOT>'AS XML
)XMLURL
)XU CROSS APPLY
(SELECT XMLURL
.value
('(/ROOT/ELE)[2]'
,'VARCHAR(256)'
)ELE2
,XMLURL
.value
('(/ROOT/ELE)[3]'
,'VARCHAR(256)'
)ELE3
,XMLURL
.value
('(/ROOT/ELE)[4]'
,'VARCHAR(256)')ELE4
)XE CROSS APPLY
(SELECT NULLIF
(CASE WHEN ELE2
='API' THEN ELE3 ELSE ELE2 END
,''
)CONTROLLER
,NULLIF
(CASE WHEN ELE2
='API' THEN ELE4 ELSE ELE3 END
,''
)[ACTION]
)LEONARD
;

然后传入PARAMETERS AccessTimeStampParam DateTime; SELECT Serial_Number FROM serialNumbers WHERE Is_Used = false AND (In_Progress = false OR Accessed_Time_Stamp < [AccessTimeStampParam]); 参数的值。