我试图以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);
}
}
当我运行框架时出现但没有数据,没有表格。 请帮忙!! 感谢
答案 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();
}
...