我正在尝试从oracle db中获取记录。我有一个select查询,它有一个order by子句实现。现在,当我在蟾蜍上触发查询时,我得到的结果是正确的。即上午10点的记录顺序就像 记录1,记录2,记录3和10:05记录1,记录2,记录3.这就是我需要的。
现在当iam通过java代码获取它时,JDBC。我尝试迭代结果集,但是在上午10:05我得到的顺序就像记录2,记录1,记录3.由于这个,当我将记录添加到arraylist时,订单没有被保留。 我不想在添加后对arraylist的记录进行排序。
有人可以让我知道为什么使用jdbc记录没有按照我们使用toad看到的顺序获取?
示例代码
try{
List<TestObjVO> testResults = new ArrayList<TestObjVO>();
double statusValue = 0;
//Connection code
pstmt = conn.prepareStatement(QUERY);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
testObj = new TestObjVO();
String date = rs.getString(1);
String status = rs.getString(2);
String svc_nm= rs.getString(3);
if("SUCCESS".equalsIgnoreCase(status)){
statusValue = 1;
}else if("ERROR".equalsIgnoreCase(status)){
statusValue = -1;
}
testObj.setTime(date);
testObj.setStatus(statusValue);
testObj.setSvc_nm(svc_nm);
testResults.add(testObj);
}
SELECT查询
SELECT to_char(PROBING_DATE,'DD-MM-YYYY HH24:MI:SS') AS PROBING_DATE, STATUS, SERVICE_NAME FROM TABLE_NAME WHERE PROBING_DATE >= (sysdate-30/1440) ORDER BY PROBING_DATE,SERVICE_NAME
表
create table TABLE_NAME(
probing_date TIMESTAMP(6) not null,
status VARCHAR2(8) not null,
service_name VARCHAR2(128) not null
)
答案 0 :(得分:2)
将您的选择更改为以下内容:
SELECT to_char(PROBING_DATE,'DD-MM-YYYY HH24:MI:SS') AS PROBING_DATE_STR,
PROBING_DATE,
STATUS,
SERVICE_NAME
FROM TABLE_NAME
WHERE PROBING_DATE >= (sysdate-30/1440)
ORDER BY PROBING_DATE,SERVICE_NAME;
请注意,返回了一个额外的字段,它是原始的TIMESTAMP字段。