JDBC獲取資料庫及表資訊
下面就是我的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。