91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDBC獲取數據庫各種信息

發布時間:2020-08-07 04:41:42 來源:網絡 閱讀:296 作者:sxt程序猿 欄目:編程語言

當通過一個JDBC連接上一個數據的時候,我們就可以通過JDBC獲取到這個數據的各種信息,比如數據庫的名稱、模式、表結構(及其字段)、視圖、函數、過程、訪問權限等等一系列的信息。當然,如果你原意,你還可以訪問個個表中的數據(只要你有權限)。

筆者曾接觸Sybase數據庫,Sybase很垃圾,搞了老半天,連個表都看不見,更無從談及訪問數據,無奈之下通過JDBC連接上數據庫后,將數據的各種信息一一輸出。

時隔兩年了,近日又在做一個項目的時候,發現很多人都用IDE從表生成POJO,各個工具生成規則也有所不同,一是SQL到Java類型之間的映射策略不一致。而是生成POJO屬性連個注釋都沒有,一大堆英文描述(實際上全是費屁,我僅僅要的是個字段的含義)。很低級吧,從表到POJO,一般來說都是從對象建模入手,快速分解問題,建立其領域模型(其中包含實體類之間聯系),如有必要才過渡到數據庫建模。當然這些都是不是鄙人所能控制的。

既然要大家都要做這一步工作,為了保持映射關系的一致性,可以定義下Java SQL Type到Java Type之間的一個映射關系,然后讀取各個表名稱、遍歷其字段的名稱、類型、注釋等信息,并將表、字段的注釋信息拿來作為POJO成員變量的注釋信息,這就達到目的了,至于getter/setter方法,各個工具都生成的很好,就不用自己再浪費時間干哪些無聊的工作了。

下面以MySQL5為例,看看實現過程:

首先為了描述表和列的關系,必須做個簡單建模:
表對象、列對象,之間是一對多關系。
public class TableInfoBean {
private String tableName;
private String tableComment;
private List<ColumnBean> columnList=new ArrayList<ColumnBean>();

public class ColumnBean {
private String columnName;
private String columnComment;
private String SqlType;

這個關系很簡單,就這么搞定了,用來保存一個表信息。

下面就是如何從數據庫讀取表信息了。
在這里依賴一個類DatabaseMetaData,這個對象可以從數據庫連接來獲取。有了它萬事大吉了,想知道什么問它即可:
DatabaseMetaData databaseMetaData = conn.getMetaData();

    //獲取所有表
    ResultSet tableSet = databaseMetaData.getTables(null, "%", "%", new String[]{"TABLE"});
    //獲取tableName表列信息
    ResultSet columnSet = databaseMetaData.getColumns(null, "%", tableName, "%");

上面代碼會得到兩個結果集,對照DatabaseMetaData 的文檔,我們可以通過結果集的列名來獲取想要的信息,例如

String tableName = tableSet.getString("TABLE_NAME");
String tableComment = tableSet.getString("REMARKS");

String columnName = columnSet.getString("COLUMN_NAME");
String columnComment = columnSet.getString("REMARKS");
String sqlType = columnSet.getString("DATA_TYPE");

含義很清楚我就不做解釋了。

逐個遍歷表,然后得到一個TableInfoBean的集合,這個集合就是數據庫中所有表的信息了,有了這個信息,生成xml、POJO簡直就是小兒科的事情了。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仁布县| 马关县| 金坛市| 策勒县| 万全县| 克东县| 托克逊县| 太白县| 广丰县| 河西区| 长武县| 峡江县| 弥勒县| 溧水县| 常德市| 霍州市| 兴宁市| 宁南县| 哈密市| 克山县| 图们市| 冕宁县| 高陵县| 喜德县| 丽江市| 沾益县| 丁青县| 潮安县| 海南省| 泰州市| 嘉峪关市| 汾阳市| 曲水县| 玉林市| 光泽县| 盱眙县| 安宁市| 和林格尔县| 清镇市| 莱芜市| 凯里市|