JDBC如何获取mysql的所有数据库的名字?

qq_24683975 2020-12-23 12:52:19
我的代码是这个

import java.sql.*;
public class Demo1 {
private static String url="jdbc:mysql://localhost:3306/";
private static String user="root";
private static String pwd="";
public static void main(String[] args) throws ClassNotFoundException, SQLException {
String sql;
Class.forName("com.mysql.jdbc.Driver");
Connection conn=DriverManager.getConnection(url,user,pwd);
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("show databases");
ResultSetMetaData rs_metaData=rs.getMetaData();
while (rs.next()){
int count=rs_metaData.getColumnCount();
for (int i = 0; i < count; i++) {
System.out.println(rs_metaData.getColumnName(i + 1));
}
}
}
}

执行结果是
SCHEMA_NAME
SCHEMA_NAME
SCHEMA_NAME
SCHEMA_NAME
实际上有这几个数据库

请问应该如何操作?
...全文
1484 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_24683975 2020-12-23
  • 打赏
  • 举报
回复
引用 1 楼 rumlee 的回复:


import java.sql.*;
public class Demo1 {
private static String url = "jdbc:mysql://localhost:3306/";
	private static String user = "root";
	private static String pwd = "pass";

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		String sql;
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection(url, user, pwd);
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("show databases");
		ResultSetMetaData rs_metaData = rs.getMetaData();

		while (rs.next()) {
			int count = rs_metaData.getColumnCount();
			for (int i = 0; i < count; i++) {
				System.out.println(rs.getString(i + 1));
			}
		}
	}
}



谢谢大佬!!搞定了,刚刚学习jdbc很多都还不懂
qq_24683975 2020-12-23
  • 打赏
  • 举报
回复
引用 2 楼 老紫竹 的回复:
ResultSet rs=stmt.executeQuery("show databases"); 这结果集的第一列,就是库名,你直接 rs.next rs.getString(1) 就行了,还折腾什么metadata干嘛?
啊不好意思因为我刚刚接触jdbc,很多都不会,正在学习!谢谢大家!!
KeepSayingNo 2020-12-23
  • 打赏
  • 举报
回复
断点看看ResultSet 这个对象里面的结构,然后取出你想要的数据
老紫竹 2020-12-23
  • 打赏
  • 举报
回复
ResultSet rs=stmt.executeQuery("show databases"); 这结果集的第一列,就是库名,你直接 rs.next rs.getString(1) 就行了,还折腾什么metadata干嘛?
rumlee 2020-12-23
  • 打赏
  • 举报
回复


import java.sql.*;
public class Demo1 {
private static String url = "jdbc:mysql://localhost:3306/";
	private static String user = "root";
	private static String pwd = "pass";

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		String sql;
		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection(url, user, pwd);
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery("show databases");
		ResultSetMetaData rs_metaData = rs.getMetaData();

		while (rs.next()) {
			int count = rs_metaData.getColumnCount();
			for (int i = 0; i < count; i++) {
				System.out.println(rs.getString(i + 1));
			}
		}
	}
}



62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧