2015-03-31 75 views
0

我不久前開始學習Java,遇到了這種類型的問題,我無法從我的數據庫中獲取任何varchar元素的標籤。 Int元素放好。試圖從數據庫varchar字符串獲取並將它們放到標籤

我的Java代碼:

import java.awt.*; 
import java.awt.event.*; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.ArrayList; 
import java.util.List; 

import javax.swing.*; 

public class DiplomaTry extends JFrame{ 
    private String url="jdbc:oracle:thin:@tlayshev:1521:TEST", 
      login="tester", 
      password="qwe123", 
      query="SELECT b FROM DIPLOMA WHERE a > ?"; 
    JCheckBox checkBox = new JCheckBox(); 
    List<String> querylist = new ArrayList<String>(); 
    Connection con; 

public void init(){ 
     try { 
      DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); 
      } 

     catch (Exception e) { 
      e.printStackTrace(); 

     } 

    } 
public List<String> adr(){ 

     ResultSet rs = null; 

     try{ 
     if(con==null){ 
      con= DriverManager.getConnection(url, login, password); 
     } 
     PreparedStatement pstmt = con.prepareStatement(query); 
     pstmt.setInt(1, 9); 
     rs = pstmt.executeQuery(); 
     while (rs.next()) { 
      String str = rs.getString(1); 
      System.out.println(str); 
      querylist.add(str); 
      //querylist.add(rs.getString(1)); 
     } 
     } 
     catch (SQLException e) { 
       e.printStackTrace(); 
      } 
     return querylist; 
    } 
ActionListener actionListener = new ActionListener() { 
     public void actionPerformed(ActionEvent actionEvent) { 
      init(); 
      List<String> querylist2=(List<String>) adr(); 
     AbstractButton abstractButton = (AbstractButton)actionEvent.getSource(); 
     boolean selected = abstractButton.getModel().isSelected(); 
     String newLabel = (selected ? querylist2.get(7) : querylist2.get(3)); 
     abstractButton.setText(newLabel); 
     } 
    }; 
DiplomaTry(String s){ 
     super(s); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     try { 
      con = DriverManager.getConnection(url, login, password); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
     } 
     Font f= new Font("Serif", Font.BOLD, 15); 
     //setFont(f); 
     checkBox.addActionListener(actionListener); 
     checkBox.setMnemonic(KeyEvent.VK_S); 
     Container contentPane = getContentPane(); 
     contentPane.add(checkBox, BorderLayout.NORTH); 
     setSize(400, 400); 
     //setVisible(true); 

     } 





public static void main(String[] args) { 
    new DiplomaTry("Selecting CheckBox").setVisible(true); 



} 

} 

和錯誤是:

Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 7, Size: 0 
at java.util.ArrayList.rangeCheck(Unknown Source) 
at java.util.ArrayList.get(Unknown Source) 
at DiplomaTry$1.actionPerformed(DiplomaTry.java:62) 
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
at javax.swing.JToggleButton$ToggleButtonModel.setPressed(Unknown Source) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
at java.awt.Component.processMouseEvent(Unknown Source) 
at javax.swing.JComponent.processMouseEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$500(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 

我所做的DB,如:

create table DIPLOMA (
    a number, 
    b varchar2(100) 
); 
INSERT INTO DIPLOMA (A, B) 
VALUES ('20', 'SOME TET10'); 

VS在過去的查詢變化的參數。

回答

0

這條線:

String newLabel = (selected ? querylist2.get(7) : querylist2.get(3)); 

您正試圖獲得的第7位和第3的價值和你的列表是空的...

java.lang.IndexOutOfBoundsException:指數:7,大小:0

+0

我知道,但我不明白爲什麼querylist不能從DB – 2015-03-31 14:00:52

+0

'rs = pstmt.executeQuery();'給你零結果?我猜問題不是查詢,但對數據的處理... – 2015-03-31 15:03:20

+0

與postegre sql它的作品!我只是改變了連接到postegre驅動程序的方法...並嘗試我的程序在MAC上,它終於開始工作...我認爲問題是在數據格式的oracl數據庫 – 2015-03-31 21:25:29

相關問題