无法从JTable中获取数据库中的数据?

时间:2014-05-02 07:16:14

标签: java oracle jdbc

我试图以JTable的形式显示表格的数据。 我的表位于Oracle 10g Express Edition。 T.name:医生 我希望整个表格应该在JTable的帮助下以我的形式显示。

class PatientTableFromDatabase extends JFrame
{
    static Connection con=null;
    Statement st=null;
    ResultSet rs=null;

    PatientTableFromDatabase()
    {
        Vector columnNames = new Vector();
        Vector data = new Vector();

        try
        {
            //  Connect to the Database
            try{

                //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                //cn=DriverManager.getConnection("Jdbc:Odbc:pat");
                Class.forName("oracle.jdbc.OracleDriver");
                Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:xe", "hr", "hr");
            }

            catch(Exception e)
            {
                //System.out.println(e);
                e.printStackTrace();
            }


            //  Read data from a table

            String sql = "Select * from Doctor";
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery( sql );
            ResultSetMetaData md = rs.getMetaData();
            int columns = md.getColumnCount();

            //  Get column names

            for (int i = 1; i <= columns; i++)
            {
                columnNames.addElement(md.getColumnName(i));
            }

            //  Get row data

            while (rs.next())
            {
                Vector row = new Vector(columns);

                for (int i = 1; i <= columns; i++)
                {
                    row.addElement(rs.getObject(i));
                }

                data.addElement( row );
            }

        }
        catch(Exception e)
        {
            System.out.println( e );
            //e.printStackTrace();
        }

        //  Create table with database data

        JTable table = new JTable(data, columnNames);


        JScrollPane scrollPane = new JScrollPane(table);
        getContentPane().add( scrollPane );

          /*  JPanel buttonPanel = new JPanel();
         getContentPane().add( buttonPanel, BorderLayout.SOUTH );*/
    }


    public static void main(String[] args)
    {
        PatientTableFromDatabase frame = new PatientTableFromDatabase();
        frame.setDefaultCloseOperation( EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);
    }
}

当我运行框架时出现但没有数据,没有表格。 请帮忙!! 感谢

2 个答案:

答案 0 :(得分:1)

你的SQL查询是空的

 ResultSet rs = stmt.executeQuery(  );

尝试

ResultSet rs = stmt.executeQuery(  sql);

答案 1 :(得分:0)

您有两个名为con

的变量

第一个是在类顶部定义的静态,然后在第21行的try-catch块中再次定义它。

在第34行,您使用的是未初始化的con版本,因此您获得了NullPointerException。

要解决此问题,请将代码更改为以下内容:

...
try{
    //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //cn=DriverManager.getConnection("Jdbc:Odbc:pat");
    Class.forName("oracle.jdbc.OracleDriver");
    con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1522:xe", "hr", "hr");
}
catch(Exception e) {
    e.printStackTrace();
} 
...