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

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条回答

  • 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中没有表

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 vc6.0中想运行代码的时候总是提示无法打开文件是怎么回事
  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题