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

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 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法