废话不多少,直接上代码
功能实现:查询所有库的所有表的所有字段的存储的值是否符合条件
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* @Description Mysql自定义查询-查询所有库的所有表的所有字段的存储的值是否符合条件,可自行扩展,修改对应的sql查询即可
* @Author csdn_wyy
* @Data 2023/5/30 11:35
*/
public class MysqlConTest {
/**
* 步骤一:定义连接数据库的相关信息
*/
static String driver = "";
/**
* 数据库链接
*/
static String url = "";
/**
* 用户名
*/
static String username = "";
/**
* 密码
*/
static String password = "";
public static void main(String[] args) throws Exception{
//步骤二:加载jdbc驱动
Class.forName(driver);
//步骤三:通过驱动管理器获得和数据的连接
Connection conn = DriverManager.getConnection(url,username,password);
System.out.println("数据库的连接:"+conn);
//步骤四:定义查询的sql语句
//查询所有的库,表,字段
//table_schema:库名;table_name:表名;column_name:字段名
String sql = "SELECT table_schema,table_name,column_name from information_schema.`COLUMNS`";
//步骤五:创建一个PreparedStatement对象(可以用来执行sql,来操作数据库)
PreparedStatement pstmt = conn.prepareStatement(sql);
//步骤六:执行sql,得到结果集
ResultSet rs = pstmt.executeQuery();
while (rs.next()){
//TODO 可自行扩展其他查询逻辑
//自定义sql查询逻辑
//查询所有库的所有表的所有字段(存储的值)中包含 版本 的数据
String findSql = "select count(1) as num from "
+ rs.getString("table_schema") + "."
+ rs.getString("table_name")
+ " where " + rs.getString("column_name")
+ " like '%版本%'";
System.out.println(findSql);
PreparedStatement preparedStatement = conn.prepareStatement(findSql);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()){
String num = resultSet.getString("num");
System.out.println(num + "个符合");
}
}
//步骤七:关闭资源
rs.close();
conn.close();
}
}
数据库连接,地址,用户名,密码自己手动带入即可,图中的查询逻辑是查询所有库的所有表的所有字段中存储的值包含版本两个字的信息,如果需要其他实现,手动替换即可。
查询所有的库,所有表即所有字段
SELECT table_schema,table_name,column_name from information_schema.`COLUMNS`
查询所有库,所有表的所有字段存储的值符合条件的数量
select count(1) as num from "
+ rs.getString("table_schema") + "."
+ rs.getString("table_name")
+ " where " + rs.getString("column_name")
+ " like '%版本%'"
到此结束~