簡體   English   中英

SQL查詢雖然在Access中返回結果,但不返回Java的結果

[英]SQL query returns no result from Java although it returns a result in Access

當我運行此查詢時:

select character from tbl_Unknown where format(fw,'.###')='48.143' and code='0001'

它在Access查詢接口中返回一個結果,但是當我嘗試從Java運行它時,它不會返回結果。

我的桌子(tbl_Unknown):

char_id: autonumber   value:1
fw: short text        value:'48.1425'   Hint:after format it become '48.143'.
code: short text      value:'0001' 
character: short text value: 'x'

我的java代碼:

public static String getLostedCharacter(String font,String fw, String code) {
      Connection conn = ConnectDB.getConnection();
      String character = null;
       try {
        Statement statement = conn.createStatement();
        String query = "select character from tbl_"+font+" where format(fw,'.###')='"+fw+"' and code='" + code + "'";
        ResultSet rs = statement.executeQuery(query);
         while (rs.next()) {
            character = rs.getString(1);
            return character;
        }
        statement.close();
        rs.close();
    } catch (SQLException ex) {
        return "";
    }
    return "";   
} 

從Access應用程序本身運行的訪問SQL查詢可以使用從其他應用程序運行的Access SQL查詢中可能不可用(或可能表現略有不同)的各種VBA函數。

作為一種解決方法,我建議:

String query = String.format(
        "select character from tbl_%s " +
        "where Trunc((Val(fw)*1000)+0.5)=? and code=?", 
        font);
PreparedStatement ps = conn.prepareStatement(query);
ps.setInt(1, (int)(1000 * Double.parseDouble(fw)));  // e.g. 48143
ps.setString(2, code);
ResultSet rs = ps.executeQuery();

編輯重新:評論

正如jamadei所解釋的,在UCanAccess版本<= 2.0.6.2中實現的Format()函數產生的結果與此特定情況下的Access / VBA實現略有不同。 具體Format(48.1425,".###)返回48.143在Access查詢,但它返回48.142在UCanAccess查詢, 這可能在未來UCanAccess釋放被糾正。 這已經在UCanAccess 2.0.6.3修正。

所提到的問題(格式函數中的int函數和舍入模式“half up”)都已在2.0.6.3中修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM