【问题标题】:Trying to get from DB varchar strings and put them to the label试图从 DB varchar 字符串中获取并将它们放入标签
【发布时间】:2015-03-31 23:00:34
【问题描述】:

不久前我开始学习 Java,遇到了我无法从我的数据库中提取任何 varchar 元素的问题。 Int 元素放得很好。

我的 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)

我把数据库做成这样的:

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

vs 在最后一个查询中更改参数。

【问题讨论】:

    标签: java database checkbox


    【解决方案1】:

    这一行:

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

    您正在尝试获取位置 7 和 3 的值,而您的列表为空...

    java.lang.IndexOutOfBoundsException:索引:7,大小:0

    【讨论】:

    • 我知道,但我不明白为什么查询列表不能从数据库中获取任何字符串值
    • rs = pstmt.executeQuery(); 给你零结果?我想问题不是查询,而是数据的处理......
    • 使用 postegre sql 就可以了!!!!我刚刚更改了连接到 postegre 驱动程序的方法...并在 MAC 上尝试了我的程序,它终于开始工作了...我认为问题出在 oracl db 中的数据格式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2020-07-30
    • 1970-01-01
    • 2018-04-25
    • 2013-06-19
    相关资源
    最近更新 更多