2013-08-18 79 views
-1

我有一個問題,Java數據庫我的sql查詢不工作

我的代碼是(我的項目其唯一的一個小部分)

public void Read_from_DB(int exhibition_id){ 
      Statement stmt = null; 
      Connection connect = null; 

      try { 
       connect=MYConnection.new_connection(); 
       stmt = connect.createStatement(); 
       QuestionCatalog.get_QuestionCatalog_instance().setShow_quest(new ArrayList<Question>()); 
       String sql = "SELECT * FROM question WHERE Selection=0 AND exhibition_id="+exhibition_id; 
       //System.out.println(sql); 
       ResultSet rs = stmt.executeQuery(sql); 
       System.out.println("!"); 
       System.out.println("->"+rs.getFetchSize()); 
       while(rs.next()){ 
        Question jd=new Question(); 
        System.out.println("!!!"); 
        jd.setQuestion_id(rs.getInt("Question_id")); 
        jd.setQuestion(rs.getString("Question")); 
        jd.setQuestion(rs.getString(exhibition_id)); 
        jd.getOption_2().setContent(rs.getString("Content2")); 
     QuestionCatalog.get_QuestionCatalog_instance().getShow_quest().add(jd); 
        System.out.println("size"+QuestionCatalog.get_QuestionCatalog_instance().getShow_quest().size()); 
MYConnection.close_connection(stmt, connect); 
       } 
      }catch (Exception e) { 
      } 

     } 

當我執行這個代碼,它dosent工作 我的數據庫表的名稱是「問題」 但是當我在此查詢「問題」改名字,沒有得到任何錯誤 那麼我認爲這並沒有執行我的查詢,我的主要是

public static void main(String[] args) { 
     DB_question d=new DB_question(); 
     d.Read_from_DB(1); 
    } 

和「MYConnection.new_connection();」在代碼返回的連接部分,(我測試它在另一大類是工)

結果在控制檯:

SELECT * FROM Question WHERE Selection=0 AND exhibition_id=1 
! 
->0 

它並沒有顯示「!」是的結果「的System.out.println(」! 「);」 然後我認爲它沒有工作:| 感謝

P.S我的數據庫 picture

+0

嘗試直接傳遞上面查詢到數據庫。你會得到什麼結果? –

+0

你得到了什麼錯誤? –

+0

@Marty McVry:沒什麼,我說我的主系統中sysout的結果,在我的數據庫中什麼也沒有發生,當我寫錯了qury它不會給我任何錯誤! – SDWACW

回答

0

的我從你的問題理解什麼畫面是區分大小寫的名字輸出不當表名或列名。我對嗎?

據我所知,像SELECT,FROM等保留字在所有OS' s都是不敏感的。而其他所有用戶定義的對象名稱都區分大小寫,在*ix OS環境中。但不在Windows OS環境中。

但是所有的RDBMS配置應該允許跨平臺部署的不區分大小寫。這就是爲什麼你從question更改爲Question沒有引發錯誤。

和關於您的查詢結果:
我怕你已經測試您的查詢在不同的數據庫或服務器。他們可能沒有相同的數據,因此始終沒有進入while(rs....循環。

如下更改您的代碼,看看輸出是什麼:

ResultSet rs = stmt.executeQuery(sql); 
System.out.println("!"); 
System.out.println("->"+rs.getFetchSize()); 

rs.beforeFirst(); 
rs.last(); 
int rowCount = rs.getRow(); 
System.out.println("---> rowCount: " + rowCount); 
rs.beforeFirst(); 

while(... 

另請參考
DBMS Identifiers and Case Sensitivity - MysQL

+0

emm是我知道,但是當我更改我的表名和錶行的敏感性時,它不會給我任何錯誤 – SDWACW

+0

我的輸出是:創建語句... SELECT * FROM WHERE選擇= 0 AND quest_poll_id = 1 ! - > 0 ---> rowCount:3 !!! – SDWACW

+0

感謝我的代碼工作:) – SDWACW