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

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 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀