JDBC成功连接到数据库,我在逐步调式的时候,也看到生成的连接了。
应老师的要求,要获取一个数据库中所有的表名称,下面是我写的一个函数,提示没有错误,但最后打印结果,为空。
图片的上一部分是另一个功能,足以证明以成功连接到数据库
求告知,可能出错的问题,在哪里?
下面是代码
public static List<String> getAllTableNames( String databasename) {
List<String> tableNames = new ArrayList<String>();
Connection conn1 = null;
try {
conn1 = getConnection();
DatabaseMetaData dbmd1 = conn1.getMetaData();
// 表名列表
ResultSet rest = dbmd1.getTables(databasename, null, null, new String[] { "TABLE" });
// 输出 table_name
while (rest.next()) {
tableNames.add(rest.getString("TABLE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return tableNames;
}
public static Connection getCon() {
String username = "root";
String password = "mysql";
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/monitor_plat?autoReconnect=true&useSSL=false";
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
public static List<String> getAllTableNames(String dbName) {
List<String> tableNames = new ArrayList<>();
Connection conn;
try {
conn = getCon();
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rest = dbmd.getTables(dbName, null, null, new String[]{"TABLE"});
while (rest.next()) {
tableNames.add(rest.getString("TABLE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return tableNames;
}
public static void main(String[] args) {
System.out.println(getAllTableNames("monitor_plat"));
}
上面代码可以运行出tables,只能说明你传递的dabasename中没有表