最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Java读取数据库表

来源:博客园

Java读取数据库表

package com.easycrud.builder;import com.easycrud.utils.PropertiesUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.sql.*;/** * @BelongsProject: EasyCrud * @BelongsPackage: com.easycrud.builder * @Author: xpx * @Email: 2436846019@qq.com * @CreateTime: 2023-05-02  18:02 * @Description: 读Table * @Version: 1.0 */public class BuildTable {    private static final Logger logger = LoggerFactory.getLogger(BuildTable.class);    private static Connection conn = null;    /**     * 查表名和表注释     */    private static String SQL_SHOW_TABLE_STATUS = "show table status";    /**     * 读配置,连接数据库     */    static {        String driverName = PropertiesUtils.getString("db.driver.name");        String url = PropertiesUtils.getString("db.url");        String user = PropertiesUtils.getString("db.username");        String password = PropertiesUtils.getString("db.password");        try {            Class.forName(driverName);            conn = DriverManager.getConnection(url,user,password);        } catch (Exception e) {            logger.error("数据库连接失败",e);        }    }    /**     * 读取表     */    public static void getTables() {        PreparedStatement ps = null;        ResultSet tableResult = null;        try{            ps = conn.prepareStatement(SQL_SHOW_TABLE_STATUS);            tableResult = ps.executeQuery();            while(tableResult.next()) {                String tableName = tableResult.getString("name");                String comment = tableResult.getString("comment");                logger.info("tableName:{},comment:{}",tableName,comment);            }        }catch (Exception e){            logger.error("读取表失败",e);        }finally {            if (tableResult != null) {                try {                    tableResult.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }            if (ps != null) {                try {                    ps.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }            if (conn != null) {                try {                    conn.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }        }    }}

新手引导

Logger

Java自带的日志。

常见用法如下,打印日志信息:


(相关资料图)

logger.error("数据库连接失败",e)

logger.info("tableName:{},comment:{}",tableName,comment),{}是占位符

LoggerFactory.getLogger(xxx.class)

指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类。

Connection

Connection 对象用于打开与数据源的连接。

Class.forName(driverName)

加载驱动程序。

DriverManager.getConnection(url,user,password)

获取数据库连接。

PreparedStatement

用来执行SQL查询语句的 API 之一。

ResultSet

结果集 (ResultSet) 是数据中查询结果返回的一种对象,结果集是一个存储查询结果的对象。

ps = conn.prepareStatement(SQL_SHOW_TABLE_STATUS)

执行前会对SQL语句进行预编译的操作,然后就开始执行SQL语句,并返回结果。

tableResult = ps.executeQuery()

把数据库响应的查询结果存放在ResultSet类对象中供我们使用。

ResultSet中next()方法

ResultSet中指针的初始位置位于第一行之前;第一次调用next()方法将会把第一行设置为当前行。

name和comment

分别代表执行数据库show table status语句后查询出的表名和表注释。配合ResultSet的getString()方法得到对应值。

关键词: