1. 程式人生 > >java 獲取表結構

java 獲取表結構

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

jdbc有的。假設有個con  
  DatabaseMetaData   dbmd   =   con.getMetaData();  
  rs   =   dbmd.getColumns(con.getCatalog(),   schema,   tableName,   null);  
  rs.getString(DATA_TYPE)       java.sql.Types   的   SQL   型別  
  rs.getString(COLUMN_SIZE)     列的大小。對於   char   或   date   型別,列的大小是最大字元數,對於   numeric   和   decimal   型別,列的大小就是精度。  
  rs.getString(DECIMAL_DIGITS)   小數部分的位數

 

 

JDBC中通過MetaData來獲取具體的表的相關資訊。可以查詢資料庫中的有哪些表,表有哪些欄位,欄位的屬性等等。MetaData中通過一系列getXXX函式,將這些資訊存放到ResultSet裡面,然後返回給使用者。關於MetaData的說明網上也有不少,這裡我只是從我自身學習的角度來記錄一下簡單使用JDBC以及獲取資料表相關資訊的方法。 
   首先,http://hometown.aol.com/kgb1001001/Articles/JDBCMetadata/JDBC_Metadata.htm 這裡有篇名字叫做《Understanding JDBC MetaData》的文章,講解得不錯。

   下面就是我的JDBC下的獲取表資訊的程式碼了。我是以MySQL 5.0作為測試平臺的。

   1. JDBC連線MYSQL的程式碼很標準,很簡單。
   class.forName("com.mysql.jdbc.Driver").newInstance();
   Connection conn = DriverManager
     .getConnection("jdbc:mysql://localhost/test?user=root&password=123456");

   2. 下面就是獲取表的資訊。
    m_DBMetaData = m_Connection.getMetaData();
    ResultSet tableRet = m_DBMetaData.getTables(null, "%",m_TableName,new String[]{"TABLE"});
    其中"%"就是表示*的意思,也就是任意所有的意思。其中m_TableName就是要獲取的資料表的名字,如果想獲取所有的表的名字,就可以使用"%"來作為引數了。

   3. 提取表的名字。
   while(tableRet.next) System.out.println(tableRet.getString("TABLE_NAME"));

 通過getString("TABLE_NAME"),就可以獲取表的名字了。
 從這裡可以看出,前面通過getTables的介面的返回,JDBC是將其所有的結果,儲存在一個類似table的記憶體結構中,而其中TABLE_NAME這個名字的欄位就是每個表的名字。

  4. 提取表內的欄位的名字和型別
  String columnName;
  String columnType;
  ResultSet colRet = m_DBMetaData.getColumns(null,"%", m_TableName,"%");
  while(colRet.next()) {
   columnName = colRet.getString("COLUMN_NAME");
   columnType = colRet.getString("TYPE_NAME");
   int datasize = colRet.getInt("COLUMN_SIZE");
   int digits = colRet.getInt("DECIMAL_DIGITS");
   int nullable = colRet.getInt("NULLABLE"); 
   System.out.println(columnName+" "+columnType+" "+datasize+" "+digits+" "+
     nullable);
  }

  JDBC裡面通過getColumns的介面,實現對欄位的查詢。跟getTables一樣,"%"表示所有任意的(欄位),而m_TableName就是資料表的名字。

  getColumns的返回也是將所有的欄位放到一個類似的記憶體中的表,而COLUMN_NAME就是欄位的名字,TYPE_NAME就是資料型別,比如"int","int unsigned"等等,COLUMN_SIZE返回整數,就是欄位的長度,比如定義的int(8)的欄位,返回就是8,最後NULLABLE,返回1就表示可以是Null,而0就表示Not Null。
 

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述