1. 程式人生 > >jdbc獲取資料表表結構

jdbc獲取資料表表結構

 

做製作開發平臺時,首要的一點是如何取得資料庫表結構資訊。一般通用的做法就是通過JDBC中的ResultSetMetaData類來進行操作,當你取得了資料庫表結構資訊後,比如說表的每個欄位名稱,欄位型別等。

首先取得資料庫連線後取得DatabaseMetaData。

DatabaseMetaData dbmd = con.getMetaData();

con是一個數據庫連線,直接通過連線資訊取得。

然後我們就可以取當前資料庫中的所有表:

        ArrayList v = new ArrayList();
        ResultSet rs = null;
        String[] typeList = new String[] { "TABLE" };
        rs = dbmd.getTables(catalog, schema, null, typeList);
        for (boolean more = rs.next(); more; more = rs.next()) {
            String s = rs.getString("TABLE_NAME");
            String type = rs.getString("TABLE_TYPE");
            if (type.equalsIgnoreCase("table") && s.indexOf("$") == -1)
                v.add(s);
        }
其中的rs.getString("TABLE_NAME");方法就是取得表名。

取得表名我們在執行select * from tablename 的方法,取得結果集:

String sql = "select * from "+tableName;

   Statement state = con.createStatement();
   ResultSet rs = state.executeQuery(sql);
   ResultSetMetaData rsmd = rs.getMetaData() ;
   for(int i = 1; i <= rsmd.getColumnCount(); i++)
   {
        String colname = rsmd.getColumnName(i);
             String typeName = rsmd.getColumnTypeName(i);
             int itype = rsmd.getColumnType(i);
             int size = rsmd.getColumnDisplaySize(i);
             int precision=rsmd.getPrecision(i);
             int n = rsmd.isNullable(i);
             int scale=rsmd.getScale(i);
             boolean nullable = true;
             switch (n) {
             case 0: // '/0'
                 nullable = false;
                 break;

             case 1: // '/001'
                 nullable = true;
                 break;

             default:
                 nullable = true;
                 break;
             }
             SQLColumn col = new SQLColumn(colname);
             SQLType type = simpleType(typeName, itype);
             if (type.allowsParameters())
                 type.setParameterString("" + size);
             col.setType(type);
             col.setIType(itype);
             col.setSize(size);
             col.setScale(scale);
             col.setPrecision(precision);
             col.setNullable(nullable);
             col.setReadOnly(rsmd.isReadOnly(i));
             col.setAutoIncrement(rsmd.isAutoIncrement(i));
             col.setSearchable(rsmd.isSearchable(i));
             col.setCurrency(rsmd.isCurrency(i));
             col.setCaseSensitive(rsmd.isCaseSensitive(i));
             col.setSigned(rsmd.isSigned(i));
             col.setClassType(rsmd.getColumnClassName(i));
             col.setDisName(rsmd.getColumnLabel(i));
             if ( col.getDisName().length() > 0 )
              col.setName(col.getDisName()) ;
    columns.add(col);
   }

以上操作

相關推薦

jdbc獲取資料表表結構

  做製作開發平臺時,首要的一點是如何取得資料庫表結構資訊。一般通用的做法就是通過JDBC中的ResultSetMetaData類來進行操作,當你取得了資料庫表結構資訊後,比如說表的每個欄位名稱,欄位型別等。 首先取得資料庫連線後取得DatabaseMetaData。 Da

JDBC檢視資料結構

在JDBC連線Oracle資料庫成功之後,怎麼取得資料庫配置資訊及資料庫表和欄位的相關資訊?本文做一簡單介紹。 以下是連線資料庫的例子 ConnectionDB cdb = new ConnectionDB();//新建資料庫連線物件

Mysql命令desc:獲取資料結構

使用MySQL資料庫desc 表名時,我們看到Key那一欄,可能會有4種值,即 ' ','PRI','UNI','MUL'。 如果Key是空的,那麼該列值的可以重複,表示該列沒有索引,或者是一個非唯一的複合索引的非前導列;如果Key是PRI,那麼該列是主鍵的組成部分;如果K

教師結構化面試,一鍵獲取資料

教師結構化面試,一個程式設計師男朋友,為愛而碼 【需求】   1、教 結構化面試資料太少,而且最好列印   2、資料儲存word檔案,方便共享 作為一名程式設計師,開始coding... 把如下程式碼儲存為download.py,雙擊執行,結果如下:

用python批量獲取某路徑資料夾及子資料夾下的指定型別檔案,並按原資料結構批量儲存處理後的檔案

因為是把自己成功執行的整個程式碼按幾部分截取出來的,所以每一小節程式碼不一定能單獨執行,特此說明。 1.獲取某路徑資料夾及子資料夾下的指定pcm型別檔案的全部路徑 import os def eachfile(filepath):     pathdi

Jmeter-JDBC獲取資料庫資料並作為變數傳輸

  版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/kangi/article/details/81670796 一、新增資料庫對應引入的jar包: oracle:oracle資料安裝目錄下\product\12.1.0\clie

使用JDBC獲取資料庫資料,並生成json格式檔案(省市區三級聯動)

前言: 轉眼已經2018年了, 17年有點忙,出差將近三個月,部落格也停更了好久。 一直都是不停的修復bug,和做一些業務需要的提示和互動。主要是因為和硬體有關係所以比較麻煩,開發週期也很長,而且還不穩定,硬體先行,然後在是除錯,互動。不過也有好處,學到的東西自然不是簡簡單單的 程式碼了。

Java遞迴獲取zTree標準結構資料優化

資料結構: var nodes = [ {name: "父節點1", children: [ {name: "子節點1"}, {name: "子節點2"} ]} ]; // 獲取標準JSON資料 public st

oracle中比較兩表表結構差異和資料差異的方法

在工作中經常會遇到導資料的情況,有時候需要比較生產庫和測試庫的表結構是否有變化,找出差異,並且可以找出差異資料。 分析:手工方式不可取,因為要比較的表結構比較多,不容易看出來,採取兩表差集並集的方式查詢。 MINUS(差集): SQL中有一個MINUS關鍵字,它運用在兩個S

是用JDBC從資料庫中獲取資料並以java物件返回

/** * * @param c * for example Person.class * @param primaryKeys * primaryKeys為主鍵,引數順序和表中保持一致 如果id, name

java通過JDBC獲取MySQL的資料實現

由慕課網聽之,後簡單的捋了一下,記下來,備後用 要從eclipse中的java程式碼獲取到MySQL資料庫中的資訊,Java提供了JDBC作為橋樑來實現 首先需要在我們的專案中匯入JDBC相關的包 下載:mysql-connector-java-5.0.8-bin.ja

自動生成資料庫表設計(一)之獲取JDBC獲取資料

最近專案快了驗收,那麼接下來就是寫一些比較煩人的文件,在寫資料庫設計文件時,到了詳細設計這一塊有點尷尬了,每張表,沒個欄位都要寫上去,由於前期沒有整理,所以這個工作量還是很大,我查看了我們的資料庫發現有353張表,這樣寫,得花多久的時間啊。。。於是想通過程

jmeter使用jdbc獲取註冊驗證碼進行註冊

driver datebase cnblogs ora 實例 lib table 不同數據庫 分享 自動化工具測試註冊功能時,往往會遇到驗證碼,這個煩人的驗證碼怎麽能夠解決掉呢? 通常有兩種方法 讓開發禁用註冊碼,或在測試環境寫個固定的

jdbc獲取數據具體過程

elong pre 我認 二進制流 ace 字節 常量 有趣 prot 下面是個最簡單的使用jdbc取得數據的應用。在例子之後我將分成4步,分別是①取得連接,②創建PreparedStatement,③設置參數,④執行查詢,來分步分析這個過程。除了設置參數那一步之外,其他的

數據庫字段為null時jdbc獲取的值

ref obj valid 答案 min test float thead 是否 當數據庫字段的值為NULL時,我們使用jdbc獲取到的值為什麽呢?對於varchar、char等類型當使用getString時,根據常識輕松地知道值應該是NULL。但是,對於int、float

遍歷獲取Teamcenter中結構管理器的所有BOMLine

getch ntb lis row title asc mce for .get 直接上代碼: 1 public void collectAllBomLine(TCComponentBOMLine topBomLine) throws TCException{ 2

El表示式獲取資料

<h1>獲取常量</h1>   ${"奧運會"}${2008 } ${true}    <h1>獲取域中的變數</h1>   <%    String na

JS語句將後臺獲取資料在頁面展示方法原始碼

<!DOCTYPE html> <html>     <head>         <meta charset="utf-8" />   

JDBC插入資料後返回新資料id

使用jdbc向表中插入資料時,有時候需要返回新插入資料的id。比如現在要向兩個表中分別插入一條資料,第一條資料插入後生成的id要作為第二條資料的一個欄位值。 具體程式碼: PreparedStatement pstmt = null; ResultSet rs =

資料倉庫入倉問題:mysql獲取資料存在"UTF8": 0x00問題的轉換

1、 invalid byte sequence for encoding “UTF8”: 0x00 要使用如下方案轉換欄位 replace(ifnull(first_name,null),char(‘0x00’),null) as first_name, 2、寫入到csv時,無法寫入完全的