如何将数据库中的 table 名称显示到 JTable 中?
How to display table name in database to JTable?
我想获取数据库中的所有 table 名称并将其显示在 JTable
中。
正在打印:
con = DriverManager.getConnection("jdbc:h2:C:/SimpleGST/GST/INVOICES","sa","");
String[] types = {"TABLE"};
DatabaseMetaData metadata = con.getMetaData();
ResultSet resultSet = metadata.getTables(null, null, "%", types);
while (resultSet.next()) {
String tableName = resultSet.getString(3);
System.out.println(tableName);
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
}
正在打印 table 名称,但未显示在 table 中。
while (resultSet.next())
{
String tableName = resultSet.getString(3);
System.out.println(tableName);
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
}
你有一个 while 循环,它不断用你读取的每一行数据替换模型。因此,在您上次尝试设置模型时,已经读取了 ResultSet 中的所有数据。
使用 resultSetToTableModel(...)
方法的要点是,它会为您从 ResultSet 中读取所有数据并创建 TableModel。所以不需要while循环。
您需要用一行代码替换上面的代码:
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
编辑:
but it show too many other columns .. i just want to display tables
然后您需要手动创建 table 模型。代码类似于:
Vector columnNames = new Vector();
columnNames.addElement("Table");
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
while (resultSet.next())
{
Vector row = new Vector();
row.addElement( resultSet.getString(3) );
model.addRow(row);
}
table = new JTable( model );
scrollPane.setViewportView( table );
Vector columnNames = new Vector();
columnNames.addElement("Table");
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
try{con = DriverManager.getConnection("your url");
String[] types = {"TABLE"};
DatabaseMetaData metadata = con.getMetaData();
ResultSet resultSet = metadata.getTables(null, null, "%", types);
while (resultSet.next())
{
Vector row = new Vector();
row.addElement( resultSet.getString(3) );
model.addRow(row);
}
table = new JTable(model );
scrollPane = new JScrollPane( table );
scrollPane.setBounds(10, 11, 724, 639);
contentPane.add( scrollPane );
scrollPane.setViewportView(table);
感谢@camickr 提供的代码。没有你的帮助我无法解决这个问题。
谢谢大佬
我想获取数据库中的所有 table 名称并将其显示在 JTable
中。
正在打印:
con = DriverManager.getConnection("jdbc:h2:C:/SimpleGST/GST/INVOICES","sa","");
String[] types = {"TABLE"};
DatabaseMetaData metadata = con.getMetaData();
ResultSet resultSet = metadata.getTables(null, null, "%", types);
while (resultSet.next()) {
String tableName = resultSet.getString(3);
System.out.println(tableName);
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
}
正在打印 table 名称,但未显示在 table 中。
while (resultSet.next())
{
String tableName = resultSet.getString(3);
System.out.println(tableName);
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
}
你有一个 while 循环,它不断用你读取的每一行数据替换模型。因此,在您上次尝试设置模型时,已经读取了 ResultSet 中的所有数据。
使用 resultSetToTableModel(...)
方法的要点是,它会为您从 ResultSet 中读取所有数据并创建 TableModel。所以不需要while循环。
您需要用一行代码替换上面的代码:
table.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(resultSet));
编辑:
but it show too many other columns .. i just want to display tables
然后您需要手动创建 table 模型。代码类似于:
Vector columnNames = new Vector();
columnNames.addElement("Table");
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
while (resultSet.next())
{
Vector row = new Vector();
row.addElement( resultSet.getString(3) );
model.addRow(row);
}
table = new JTable( model );
scrollPane.setViewportView( table );
Vector columnNames = new Vector();
columnNames.addElement("Table");
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
try{con = DriverManager.getConnection("your url");
String[] types = {"TABLE"};
DatabaseMetaData metadata = con.getMetaData();
ResultSet resultSet = metadata.getTables(null, null, "%", types);
while (resultSet.next())
{
Vector row = new Vector();
row.addElement( resultSet.getString(3) );
model.addRow(row);
}
table = new JTable(model );
scrollPane = new JScrollPane( table );
scrollPane.setBounds(10, 11, 724, 639);
contentPane.add( scrollPane );
scrollPane.setViewportView(table);
感谢@camickr 提供的代码。没有你的帮助我无法解决这个问题。 谢谢大佬