java jdbc解析mysql select * 的值,不知表中具体的字段名,转成map

java dbc解析mysql select * 的值,不知表中具体的字段名,转成map:
在不知道表中具体字段名的情况下,可以使用ResultSetMetaData获取到查询结果的列信息,从而将查询结果转成Map。以下是详细的Java代码示例:

import java.sql.*;
import java.util.HashMap;
import java.util.Map;

public class MysqlDbcUtil {

    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
        String username = "root";
        String password = "123456";

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 1.加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 2.建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3.创建Statement对象
            stmt = conn.createStatement();

            // 4.执行查询语句
            rs = stmt.executeQuery("select * from user");

            // 5.获取查询结果的元数据
            ResultSetMetaData metaData = rs.getMetaData();
            int columnCount = metaData.getColumnCount();

            // 6.将查询结果转成Map
            Map<String, Object> result = new HashMap<>();
            int index = 0;
            while (rs.next()) {
                Map<String, Object> row = new HashMap<>();
                for (int i = 1; i <= columnCount; i++) {
                    String columnName = metaData.getColumnLabel(i); // 获取列名
                    Object value = rs.getObject(i); // 获取列的值
                    row.put(columnName, value);
                }
                result.put(Integer.toString(index), row); // 以行号作为Map的key,整个行作为value
                index++;
            }

            // 7.打印结果
            System.out.println(result);

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                // 8.关闭资源
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }

}

在上面的代码中,我们首先通过ResultSetMetaData获取到查询结果的列信息,并遍历结果集将每一行转成Map。在转换时,我们以行号作为Map的key,整个行作为value存储。

java impala 查询kudu解析 select * 的值,不知表中具体的字段名,转成map:
类似于MySQL,Impala查询Kudu表也可以使用ResultSetMetaData获取查询结果的列信息,进而将查询结果转成Map。以下是详细的Java代码示例:

import java.sql.*;
import java.util.HashMap;
import java.util.Map;

public class ImpalaDbcUtil {

    public static void main(String[] args) {
        String url = "jdbc:impala://localhost:21050/default;AuthMech=0;";
        String username = "";
        String password = "";

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 1.加载数据库驱动
            Class.forName("com.cloudera.impala.jdbc41.Driver");

            // 2.建立数据库连接
            conn = DriverManager.getConnection(url, username, password);

            // 3.创建Statement对象
            stmt = conn.createStatement();

            // 4.执行查询语句
            rs = stmt.executeQuery("select * from kudu_table");

            // 5.获取查询结果的元数据
            ResultSetMetaData metaData = rs.getMetaData();
            int columnCount = metaData.getColumnCount();

            // 6.将查询结果转成Map
            Map<String, Object> result = new HashMap<>();
            int index = 0;
            while (rs.next()) {
                Map<String, Object> row = new HashMap<>();
                for (int i = 1; i <= columnCount; i++) {
                    String columnName = metaData.getColumnLabel(i); // 获取列名
                    Object value = rs.getObject(i); // 获取列的值
                    row.put(columnName, value);
                }
                result.put(Integer.toString(index), row); // 以行号作为Map的key,整个行作为value
                index++;
            }

            // 7.打印结果
            System.out.println(result);

        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                // 8.关闭资源
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }

}

注意:在连接Kudu表时,需要使用Impala JDBC驱动。如果没有安装可以去Cloudera官网下载并安装。同时,在连接字符串中需要指定AuthMech参数,并将其设置为0,表示不进行身份验证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值