hellowwor
苑大黑 ᕕ( ᐛ )ᕗ
2019-11-20 21:12
采纳率: 62.5%
浏览 734
已采纳

JDBC已成功连接到数据库,但是无法获取数据表的名称?

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;
     }

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • WANTAWAY314
    water___Wang 2019-11-20 23:44
    已采纳
    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中没有表

    点赞 评论

相关推荐