选择JDBC查询不按顺序

时间:2015-09-02 09:48:35

标签: java jdbc oracle11g

我正在尝试从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
)

1 个答案:

答案 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字段。