-2

最後に問題を絞り込みました。これは、「順序付け」のあるSQLを実行し、Javaで結果セットを印刷しようとしたときの問題です。結果セットはソートされていません。しかし、SQL 開発者と一緒に SQL を個別に実行すると、順序付けられた結果が表示されます。なぜですか? これを解決するオプションはありますか?

以下は私が使用している方法です

List getDBValues(short orderBy) throws Exception {
        Connection conn = null;
        ResultSet rs   = null;
        List results = nmull;
        String sqlStmt = new String();
        PreparedStatement ps = null;
        try {
            conn = Utilities.getConnection(DB);
            sqlStmt ="SELECT 
                        COLUMN1, 
                        COLUMN2, 
                        COLUMN3, 
                        FROM SAMPLE_TABLE 
                        WHERE 
                        COLUMN1 IN ('10','15') AND 
                        COLUMN3 IN ('1','2') ORDER BY ? ";

            try {
                short orderByObj = 0;

                if(orderBy < 1){
                    orderByObj = Short.parseShort(Math.abs(orderBy)+"");
                    sqlStmt += "DESC";
                }else{
                    orderByObj = orderBy;
                }

                System.out.println("==================== SQL ==================== \n"+sqlStmt);
                ps = conn.prepareStatement(sqlStmt);

                ps.setLong(1, orderByObj);

                rs = ps.executeQuery();
                while (rs.next())                               
                    System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
            }
            catch(SQLException e) {
                e.printStackTrace();
            }

        }
        catch (Exception e) {
            e.printStackTrace()
        }
        return results;

    }
4

3 に答える 3

0

明らかであるリスクを冒して、SQL クエリが実際にデータを並べ替えないという事実と何か関係があるのでしょうか? ORDERたとえば、次のような適切なステートメントで書き直すことを意味している可能性があります。

SELECT column1, column2 FROM table ORDER BY column1 DESC
于 2013-09-26T14:02:09.643 に答える