Java 如何使用jdbc从特定数据库获取所有表名
我想从特定数据库中检索所有表名。我试过下面的代码Java 如何使用jdbc从特定数据库获取所有表名,java,jdbc,Java,Jdbc,我想从特定数据库中检索所有表名。我试过下面的代码 try { DatabaseMetaData dbmd = connection.getMetaData(); String[] types = {"TABLE"}; ResultSet rs = dbmd.getTables(null, null, "%", types); while (rs.next()) { System.out.println(rs.
try {
DatabaseMetaData dbmd = connection.getMetaData();
String[] types = {"TABLE"};
ResultSet rs = dbmd.getTables(null, null, "%", types);
while (rs.next()) {
System.out.println(rs.getString("TABLE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}
但它给出了nullpointer异常。请尝试以下操作:
DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.println(rs.getString(3));
}
(取自此处:)以下示例显示方法
conn.getMetaData()
将返回预期的数据
public class Main {
public static void main(String[] args) throws SQLException {
try (Connection conn = DriverManager.getConnection("jdbc:sqlite:testdata.db");
Statement stmt = conn.createStatement()) {
String sql = "CREATE TABLE IF NOT EXISTS TEST_TABLE"
+ " (ID INT PRIMARY KEY NOT NULL,"
+ " NAME TEXT NOT NULL, "
+ " ADDRESS CHAR(50))";
stmt.executeUpdate(sql);
DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.printf("table name: %s%n", rs.getString("TABLE_NAME"));
}
}
}
}
生产量:
table name: TEST_TABLE
确切地说,它在哪里给出空指针异常?确切地说,您使用的是哪种RDBMS?嗯,我不确定以前是否问过这个问题:它在哪里给出空指针异常?在swing中单击按钮时,我正在数据库中创建表。在构造函数中,我试图获取添加到数据库中的表名。在执行之后,我得到了null指针异常,但是在添加了DriverManager.getConnection(“jdbc:sqlite:testdata.db”)之后;在构造器中,我得到了输出。好的,下一次你将通过准确地解释问题所在,避免自己和其他人浪费大量时间。“WHERE”在本例中是指“在哪一行”。因此,我想在您的例子中,异常是由
connection.getMetaData()
引发的。谁会想到这一点。我已经尝试了代码,它没有给出任何输出。我正在调用构造函数中的以下代码,并且正在使用Sqlite数据库。尝试运行以下查询(通过JDBC)并查看是否给出结果:从Sqlite_master中选择name,其中type='table';