Java讀取資料庫表 package com.easycrud.builder; import com.easycrud.utils.PropertiesUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ja ...
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: [email protected]
* @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()方法得到對應值。