2012-04-23 92 views
-1

我一直在嘗試填充一個下拉列表,其中包含存在於我的數據庫中的信息,但失敗了。 我已經看過多個指南,並且已經有一些成功的代碼,因爲我是新手並且可能錯過了一些步驟,所以我一直無法複製。 這是我目前正在:從數據庫SQL填充JList

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import java.sql.*; 

public class populategui extends JFrame 
{ 
    private JComboBox box; 
    private JLabel picture; 
    private static String[ ] filename = {rs.next}; 

    { 
     try 
    {   
      Class.forName(com.microsoft.jdbc.sqlserver); 
      Connection con = (Connection)DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=LIVE;integratedsecurity=true"); 
      Statement st = con.createStatement(); 
      String query="SELECT TOP(10)*FROM ERIT"; 
      ResultSet rs = st.executeQuery(query); 
      while(rs.next()); 
    } 
    catch(Exception e) 
    { 
    } 
    }; 

      public populategui(){ 
       super ("the title"); 
       setLayout(new FlowLayout()); 
       box=new JComboBox(filename); 


      } 

    } 

如果u需要更多信息,請讓我知道。

+1

有沒有真正足夠在這裏繼續下去。它是否編譯?它運行嗎?是否有例外?如果是這樣,什麼是堆棧跟蹤? – serg10 2012-04-23 11:06:30

+0

它應該編譯位於數據庫信息的下拉列表... 它運行在NetBeans和運行MS SQL ......,我不知道你的堆棧跟蹤對不起 – NeedyHelpo 2012-04-23 11:07:35

+0

@NeedyHelpo的意思 - 不就是不他的意思是:看我的答案。 – 2012-04-23 11:16:22

回答

1

你的問題的一部分是你正在「擠壓」可能會告訴你什麼問題的異常。將其更改爲這個(至少):

try { 
    ... 
} catch (Exception ex) { 
    ex.printStackTrace(); 
} 

,這樣就可以看到被拋出什麼異常......

更妙的是,記錄異常。


作爲一般規則,這是一個壞主意趕上java.lang.Exception,因爲你可能最終會趕上種種,你有沒有預期的異常。這是一個可怕的想法,捕捉異常並繼續,就像沒有任何錯誤一樣。如果拋棄重要證據,就很難弄清楚爲什麼程序不起作用。


最後,好像你被你發現在互聯網上覆制和粘貼的例子試圖編寫Java代碼。這是編寫不可靠代碼的祕訣。您需要正確學習的語言,去購買並閱讀Java編程的好教材,或者參加(免費)Oracle Java教程。

+0

了java.lang.RuntimeException:不可編譯的源代碼 - 錯誤的樹類型: \t 在populategui。 (populategui.java:25) \t在apple.main(populatetable.java:5) – NeedyHelpo 2012-04-23 11:28:22

+0

@NeedyHelpo - 所以......你讀錯誤信息?短語「不可編譯的源代碼」對你來說意味着什麼?如果不是,您需要花時間做Oracle Java教程! – 2012-04-23 11:43:53

0

我想你的主問題IST爲no-OP在你的循環:

ResultSet rs = st.executeQuery(query); 
while(rs.next()); 

該代碼是expandet:

ResultSet rs = st.executeQuery(query); 
while(rs.next()){ 
// nothing to to (n-times) 
}