1. 程式人生 > >java獲取資料庫中表的資訊(包括表結構)

java獲取資料庫中表的資訊(包括表結構)

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。