11 获取表中全部数据并打印

news/2024/5/18 22:59:16 标签: jdbc

while(resultSet.next())循环获取每条记录
每个循环中循环获取每列
通过getMetaData获取列信息,
resultSet.getXXX(第几列)
XXX为java类型,对应数据库类型,列信息中可以获取到
所以判断第几行第几列的列数据库类型,转成java类型
从而知道XXX的具体类型
从而获取到第几行第几列的数据



import java.sql.*;
import java.util.*;

public class Pre {

    private static String url = "jdbc:mysql:///dict?useSSL=false";
    private static String user = "root";
    private static String password = "123456";
    private static String sql = "select * from products";


    private static  Connection conn = null;

    private static PreparedStatement pre = null;

    private static ResultSet resultSet = null;

    private static ResultSetMetaData metaData = null;

    private static int columnCount = 0;

    //private static Map<String,String> maplt = null; //labelName与其对应数据库类型的映射

    //private static List labell = null; //labelName集合


    static {
        try {
            //1.注册
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2连接
            conn = DriverManager.getConnection(url,user,password);
            //操作对象
            pre  = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

            resultSet = pre.executeQuery();

            //获取列信息,元数据
            metaData = resultSet.getMetaData();

            //总共有多少列
            columnCount = metaData.getColumnCount();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    /*
    private static String kv(String k){
        //Map根据键找值
        for (String key : maplt.keySet()) {
            if(key == k){
                return maplt.get(key);
            }
        }
        return "1";



    }*/

    /*
    private static  void labelMapType() throws Exception{
        //label与类型的映射
        maplt = new HashMap();
        if(resultSet.next()){
            for(int i = 1; i<=columnCount; i++){
                String columnLabel = metaData.getColumnLabel(i);
                String columnTypeName = metaData.getColumnTypeName(i);
                maplt.put(columnLabel,columnTypeName);

            }
        }
        resultSet.first();
    }*/
    /*
    private static void labelList() throws Exception{
        //label集合
        labell = new ArrayList();
        if (resultSet.next()){
            for (int i = 1; i<= columnCount; i++){
                String columnLabel = metaData.getColumnLabel(i);
                labell.add(columnLabel);
            }
        }
        resultSet.first();
    }

     */

    //数据库类型与java类型对应

    /*Iterator entries = map.entrySet().iterator();
            while (entries.hasNext()) {
        Map.Entry entry = (Map.Entry) entries.next();
        System.out.println(entry.getKey() + "," +entry.getValue());
    }*/
    //数据库类型与java类型对应,根据数据库类型获得java类型

    private static String typeorm(String label){
        Map<String,String> ormap = new HashMap();
        ormap.put("VARCHAR","String");
        ormap.put("DECIMAL","int");
        ormap.put("TEXT","String");
        return ormap.get(label);

    }





    public static void main(String[] args) throws Exception {
        //labelMapType();//labelName与其对应类型映射,知道labelName就知道其数据库类型  //maplt
        //labelList();//labelName的集合 //labell

        resultSet.previous();
        while (resultSet.next()){
            for (int i = 1; i <= columnCount;i++){

                /*
                //获取其中一个labelName,找到其对应的数据库类型,再找到其对应的java类型
                if (typeorm(kv((String) labell.get(i-1)))== "String"){
                    System.out.print(resultSet.getString(i));
                    System.out.print(" ");
                } else if(typeorm(kv((String) labell.get(i-1)))== "int") {
                    System.out.print(resultSet.getInt(i));
                    System.out.print(" ");
                }*/
                if(typeorm(metaData.getColumnTypeName(i)) == "String"){
                    System.out.print(resultSet.getString(i));
                    System.out.print(" ");
                } else if(typeorm(metaData.getColumnTypeName(i)) == "int") {
                    System.out.print(resultSet.getInt(i));
                    System.out.print(" ");
                }




            }
            System.out.println();
        }
















    }
}


http://www.niftyadmin.cn/n/5447514.html

相关文章

家用路由器和企业路由器的区别?

一、家用路由器 家用路由器路由器交换机 它只有一个WAN口和一个LAN口&#xff0c;WAN口接公网一个地址&#xff0c;LAN口接你电脑一个IP地址&#xff0c;完全符合路由器的设计&#xff0c;而因为家里如果用了&#xff0c;说明要接多个电脑&#xff0c;那么如果还需要对每个接口…

文件上传一-WEB攻防-PHP应用文件上传函数缺陷条件竞争二次渲染黑白名单JS绕过9

演示案例&#xff1a; PHP-原生态-文件上传-前后端验证PHP-原生态-文件上传-类型文件头验证PHP-原生态-文件上传-后缀黑白名单验证PHP-原生态-文件上传-解析配置&二次渲染PHP-原生态-文件上传-逻辑缺陷&函数缺陷 #学习前必读&#xff1a; 1、课前一定要明白&#xff1a…

智慧公厕:跨界融合,打造智慧城市新名片

随着城市化进程的不断加快&#xff0c;公共厕所建设成为一个亟待解决的问题。传统的公厕存在着管理繁琐、卫生差、服务不到位等一系列问题&#xff0c;与城市发展的节奏不协调。为此&#xff0c;推进新型智慧公厕建设成为了一个重要的解决方案。智慧公厕的建设需要推进技术融合…

[Linux]知识整理(持续更新)

前言 Linux的目录结构 Linux的目录结构是一个树型结构 Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘 Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面 Linux路径的描述方式 第一章 基本命令 命令格式 例&#xff1a;ls –la /etc 说明&#xff1a; 1…

STM32---DHT11温湿度传感器与BH1750FVI光照传感器(HAL库、含源码)

写在前面&#xff1a;本节我们学习使用两个常见的传感器模块&#xff0c;分别为DHT11温湿度传感器以及BH1750FVI光照传感器,这两种传感器在对于环境监测中具有十分重要的作用&#xff0c;因为其使用简单方便&#xff0c;所以经常被用于STM32的项目之中。今天将使用分享给大家&a…

鸿蒙Harmony应用开发—ArkTS-枚举说明

说明&#xff1a; 本模块首批接口从API version 7开始支持&#xff0c;后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 Color 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 颜色名称颜色值颜色示意Black0x000000 Blue0x0000ff Brown…

Spring详解,代码事例,IOC,AOP,事务。整合MyBatis,JUnit

Spring核心 核心概念 代码书写现状 耦合度偏高 解决方案 使用对象时&#xff0c;在程序中不要主动使用new产生对象&#xff0c;转换为由外部提供对象 IOC ( Inversion of Control )控制反转 对象的创建控制权由程序转移到外部&#xff0c;这种思想称为控制反转使用对象时&…

智能优化算法 | Matlab实现牛顿-拉夫逊优化算法Newton-Raphson-based optimize(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现牛顿-拉夫逊优化算法Newton-Raphson-based optimize(内含完整源码) 源码设计 % ------------------------------------------------------------------------------------------------…