Java读取数据库表

打印 上一主题 下一主题

主题 920|帖子 920|积分 2760

Java读取数据库表
  1. package com.easycrud.builder;
  2. import com.easycrud.utils.PropertiesUtils;
  3. import org.slf4j.Logger;
  4. import org.slf4j.LoggerFactory;
  5. import java.sql.*;
  6. /**
  7. * @BelongsProject: EasyCrud
  8. * @BelongsPackage: com.easycrud.builder
  9. * @Author: xpx
  10. * @Email: 2436846019@qq.com
  11. * @CreateTime: 2023-05-02  18:02
  12. * @Description: 读Table
  13. * @Version: 1.0
  14. */
  15. public class BuildTable {
  16.     private static final Logger logger = LoggerFactory.getLogger(BuildTable.class);
  17.     private static Connection conn = null;
  18.     /**
  19.      * 查表名和表注释
  20.      */
  21.     private static String SQL_SHOW_TABLE_STATUS = "show table status";
  22.     /**
  23.      * 读配置,连接数据库
  24.      */
  25.     static {
  26.         String driverName = PropertiesUtils.getString("db.driver.name");
  27.         String url = PropertiesUtils.getString("db.url");
  28.         String user = PropertiesUtils.getString("db.username");
  29.         String password = PropertiesUtils.getString("db.password");
  30.         try {
  31.             Class.forName(driverName);
  32.             conn = DriverManager.getConnection(url,user,password);
  33.         } catch (Exception e) {
  34.             logger.error("数据库连接失败",e);
  35.         }
  36.     }
  37.     /**
  38.      * 读取表
  39.      */
  40.     public static void getTables() {
  41.         PreparedStatement ps = null;
  42.         ResultSet tableResult = null;
  43.         try{
  44.             ps = conn.prepareStatement(SQL_SHOW_TABLE_STATUS);
  45.             tableResult = ps.executeQuery();
  46.             while(tableResult.next()) {
  47.                 String tableName = tableResult.getString("name");
  48.                 String comment = tableResult.getString("comment");
  49.                 logger.info("tableName:{},comment:{}",tableName,comment);
  50.             }
  51.         }catch (Exception e){
  52.             logger.error("读取表失败",e);
  53.         }finally {
  54.             if (tableResult != null) {
  55.                 try {
  56.                     tableResult.close();
  57.                 } catch (SQLException e) {
  58.                     e.printStackTrace();
  59.                 }
  60.             }
  61.             if (ps != null) {
  62.                 try {
  63.                     ps.close();
  64.                 } catch (SQLException e) {
  65.                     e.printStackTrace();
  66.                 }
  67.             }
  68.             if (conn != null) {
  69.                 try {
  70.                     conn.close();
  71.                 } catch (SQLException e) {
  72.                     e.printStackTrace();
  73.                 }
  74.             }
  75.         }
  76.     }
  77. }
复制代码
新手引导

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()方法得到对应值。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表