通过jdbc查询数据表column信息

3 篇文章 0 订阅

方式一:mysql适用

public List<JSONObject>  getDbTableDetail(JSONObject connectConfig) throws Exception {
    Class.forName(connectConfig.getString("driver"));
    String url = connectConfig.getString("url");
    Connection connection = DriverManager.getConnection(url, connectConfig.getString("user"), connectConfig.getString("password"));


    ResultSet rs = connection.getMetaData().getColumns("", "", connectConfig.getString("table"), null);
    List<JSONObject> list = new ArrayList<>();
    while (rs.next()) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("DATA_TYPE", rs.getInt("DATA_TYPE"));
        jsonObject.put("COLUMN_SIZE", rs.getInt("COLUMN_SIZE"));
        jsonObject.put("COLUMN_NAME", rs.getString("COLUMN_NAME"));
        jsonObject.put("NULLABLE", rs.getInt("NULLABLE") == 1);
        jsonObject.put("DECIMAL_DIGITS", rs.getInt("DECIMAL_DIGITS"));
        jsonObject.put("REMARKS", rs.getString("REMARKS"));
        jsonObject.put("COLUMN_DEF", rs.getString("COLUMN_DEF"));
        jsonObject.put("TABLE_CAT", rs.getString("TABLE_CAT"));
        jsonObject.put("TABLE_SCHEM", rs.getString("TABLE_SCHEM"));
        jsonObject.put("TABLE_NAME", rs.getString("TABLE_NAME"));
        list.add(jsonObject);
    }
    connection.close();
    return list;
}

方式二:mysql、clickhouse等适用

通过jdbc 连接 执行SQL语句
DESCRIBE TABLE_NAME

@RequestMapping(value = "/test", method = RequestMethod.POST, consumes = "text/plain")
public List<Map<String, String>> suppliertest(@RequestBody String sql) {
    return  selectall = ckMapper.selectAllTest(sql);
}

public interface ckMapper {
    List<Map<String, String>> selectAllTest(@Param("sql") String sql);
}


ckMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.dao.ckMapper">
    <select id="selectAllTest" resultType="java.util.HashMap">
        ${sql}
    </select>
</mapper>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值