Java 将数据库数据显示到JTable中 公共类d7Table扩展JFrame{ 字符串dbName=“mydb”; 字符串bdUser=“root”; 字符串dbPassword=“2323”; String dbUrl=“jdbc:mysql://localhost/mydb"; 连接con=null; PreparedStatement stm=null; ResultSet res=null; 公共JTable表; 公共d7Table(){ 试一试{ con=DriverManager.getConnection(dbUrl、bdUser、dbPassword); System.out.println(“成功连接到数据库!”); res=stm.executeQuery(“从mytable中选择*); table=新的JTable(myTableModel(res)); showMessageDialog(null,新的JScrollPane(表)); }catch(SQLException-ex){ System.out.println(“无法连接到数据库”); } 添加(新的JScrollPane(表),BorderLayout.CENTER); 此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 这个。设置大小(800600); 此设置位置(300,60); 此.setVisible(true); } 公共静态DefaultTableModel myTableModel(结果集rs)引发SQLException{ ResultSetMetaData=(ResultSetMetaData)rs.getMetaData(); int columnsCount=metadata.getColumnCount(); 向量列名称=新向量(); for(int i=1;i

Java 将数据库数据显示到JTable中 公共类d7Table扩展JFrame{ 字符串dbName=“mydb”; 字符串bdUser=“root”; 字符串dbPassword=“2323”; String dbUrl=“jdbc:mysql://localhost/mydb"; 连接con=null; PreparedStatement stm=null; ResultSet res=null; 公共JTable表; 公共d7Table(){ 试一试{ con=DriverManager.getConnection(dbUrl、bdUser、dbPassword); System.out.println(“成功连接到数据库!”); res=stm.executeQuery(“从mytable中选择*); table=新的JTable(myTableModel(res)); showMessageDialog(null,新的JScrollPane(表)); }catch(SQLException-ex){ System.out.println(“无法连接到数据库”); } 添加(新的JScrollPane(表),BorderLayout.CENTER); 此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 这个。设置大小(800600); 此设置位置(300,60); 此.setVisible(true); } 公共静态DefaultTableModel myTableModel(结果集rs)引发SQLException{ ResultSetMetaData=(ResultSetMetaData)rs.getMetaData(); int columnsCount=metadata.getColumnCount(); 向量列名称=新向量(); for(int i=1;i,java,swing,jdbc,jtable,Java,Swing,Jdbc,Jtable,我的错误: public class d7Table extends JFrame { String dbName = "mydb"; String bdUser = "root"; String dbPassword = "2323"; String dbUrl = "jdbc:mysql://localhost/mydb"; Connection con = null; PreparedStatement stm = null; Re

我的错误:

public class d7Table extends JFrame {

    String dbName = "mydb";
    String bdUser = "root";
    String dbPassword = "2323";
    String dbUrl = "jdbc:mysql://localhost/mydb";
    Connection con = null;
    PreparedStatement stm = null;
    ResultSet res = null;
    public JTable table;

    public d7Table() {
        try {
            con = DriverManager.getConnection(dbUrl, bdUser, dbPassword);
            System.out.println("Connected to database successfully!");
            res = stm.executeQuery("select * from mytable");

            table = new JTable(myTableModel(res));
            JOptionPane.showMessageDialog(null, new JScrollPane(table));

        } catch (SQLException ex) {
            System.out.println("Could not connect to database");
        }

        add(new JScrollPane(table), BorderLayout.CENTER);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800, 600);
        this.setLocation(300, 60);
        this.setVisible(true);

    }

    public static DefaultTableModel myTableModel(ResultSet rs) throws SQLException {
        ResultSetMetaData metadata = (ResultSetMetaData) rs.getMetaData();
        int columnsCount = metadata.getColumnCount();
        Vector<String> columnNames = new Vector<>();
        for (int i = 1; i < columnsCount; i++) {
            columnNames.add(metadata.getColumnName(i));
        }
        Vector<Object> data = new Vector<>();
        while (rs.next()) {
            Vector<Object> eachLine = new Vector<>();
            for (int i = 1; i < columnsCount; i++) {
                eachLine.add(rs.getObject(i));
            }
            data.add(eachLine);
        }
        return new DefaultTableModel(data, columnNames);

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new d7Table();
            }
        });
    }
}
已成功连接到数据库!
线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常
在JDBCtest.d7Table.(d7Table.java:33)//参考res=stm.execute。。。一行
在JDBCtest.d7Table$1.run(d7Table.java:73)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)中
...
在这一行

Connected to database successfully!
 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at JDBCtest.d7Table.<init>(d7Table.java:33)  // refer to res =stm.execute... Row
at JDBCtest.d7Table$1.run(d7Table.java:73)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
...
stm
变量仍然是
null
,导致
NullPointerException
。你从未初始化过它

创建
PreparedStatement
的正确过程是在
连接
对象上调用
preparest陈述

但是你没有绑定变量;这里只需要一个
语句
。将
stm
声明为
语句
,连接后执行以下操作:

res = stm.executeQuery("select * from mytable");
然后,您可以使用
语句执行查询,因为您已经有了这一行:

stm = con.createStatement();

在查询变量
stm
之前,您忘记了获取该变量中的
语句。使用以下代码执行此操作:

res = stm.executeQuery("select * from mytable");

只是一个附带的问题:你用的是哪个IDE?@reporter我用的是Netbeans我不熟悉Netbeans,不过我想肯定还有一种调试方法(我不想伤害你)。@reporter我的问题解决了,谢谢大家的关注……我知道问题已经解决了。;-)我这样问是因为这是一个常见的错误,通过调试,您可以自己找出错误。正如我说的,我不想伤害你
stm = con.createStatement();