我有一个包含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#编码。
答案 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]);
参数的值。