什么是數據庫( 四 )


ResultSet
ResultSet 對象是 JDBC 中最重要的單個對象 。從本質上講,它是對一個一般寬度和未知長度的表的一種抽象 。幾乎所有的方法和查詢都將數據作為 ResultSet 返回 。ResultSet 包含任意數量的命名列,您可以按名稱訪問這些列 。它還包含一個或多個行,您可以按順序自上而下逐一訪問 。在您使用 ResultSet 之前,必須查詢它包含多少個列 。此信息存儲在 ResultSetMetaData 對象中 。
//從元數據中獲得列數
ResultSetMetaData rsmd;
rsmd = results.getMetaData();
numCols = rsmd.getColumnCount();
當您獲得一個 ResultSet 時,它正好指向第一行之前的位置 。您可以使用 next() 方法得到其他每一行,當沒有更多行時,該方法會返回 false 。由于從數據庫中獲取數據可能會導致錯誤,您必須始終將結果集處理語句包括在一個 try 塊中 。
您可以多種形式獲取 ResultSet 中的數據,這取決于每個列中存儲的數據類型 。另外,您可以按列序號或列名獲取列的內容 。請注意,列序號從 1 開始,而不是從 0 開始 。ResultSet 對象的一些最常用方法如下所示 。
getInt(int); 將序號為 int 的列的內容作為整數返回 。
getInt(String); 將名稱為 String 的列的內容作為整數返回 。
getFloat(int); 將序號為 int 的列的內容作為一個 float 型數返回 。
getFloat(String); 將名稱為 String 的列的內容作為 float 型數返回 。
getDate(int); 將序號為 int 的列的內容作為日期返回 。
getDate(String); 將名稱為 String 的列的內容作為日期返回 。
next(); 將行指針移到下一行 。如果沒有剩余行,則返回 false 。
Close(); 關閉結果集 。
getMetaData(); 返回 ResultSetMetaData 對象 。
ResultSetMetaData
您使用 getMetaData() 方法從 ResultSet 中獲取 ResultSetMetaData 對象 。您可以使用此對象獲得列的數目和類型以及每一列的名稱 。
getColumnCount(); 返回 ResultSet 中的列數 。
getColumnName(int); 返回列序號為 int 的列名 。
getColumnLabel(int); 返回此列暗含的標簽 。
isCurrency(int); 如果此列包含帶有貨幣單位的一個數字,則返回 true 。
isReadOnly(int); 如果此列為只讀,則返回 true 。
isAutoIncrement(int); 如果此列自動遞增,則返回 true 。這類列通常為鍵,而且始終是只讀的 。
getColumnType(int); 返回此列的 SQL 數據類型 。這些數據類型包括
BIGINT
BINARY
BIT
CHAR
DATE
DECIMAL
DOUBLE
FLOAT
INTEGER
LONGVARBINARY
LONGVARCHAR
NULL
NUMERIC
OTHER
REAL
SMALLINT
TIME
TIMESTAMP
TINYINT
VARBINARY
VARCHAR
DatabaseMetaData
DatabaseMetaData 對象可為您提供整個數據庫的信息 。您主要用它獲取數據庫中表的名稱,以及表中列的名稱 。由于不同的數據庫支持不同的 SQL 變體,因此,也有多種方法查詢數據庫支持哪些 SQL 方法 。
getCatalogs() 返回該數據庫中的信息目錄列表 。使用 JDBC-ODBC Bridge 驅動程序,您可以獲得用 ODBC 注冊的數據庫列表 。這很少用于 JDBC-ODBC 數據庫 。
getTables(catalog, schema,tableNames, columnNames) 返回表名與 tableNames 相符而且列名與 columnNames 相符的所有表的說明 。
getColumns(catalog, schema,tableNames, columnNames) 返回表名與 tableNames 相符而且列名與 columnNames 相符的所有表列說明 。
getURL(); 獲得您所連接的 URL 名稱 。
getDriverName(); 獲得您所連接的數據庫驅動程序的名稱 。
獲取有關表的信息
您可以使用 DataBaseMetaData 的 getTables() 方法來獲取數據庫中表的信息 。這個方法有如下4個 String 參數:
results =dma.getTables(catalog, schema, tablemask, types[]);
其中參數的意義是:
Catalog 要在其中查找表名的目錄名 。對于 JDBC-ODBC 數據庫以及許多其他數據庫而言,可將其設置為 null 。這些數據庫的目錄項實際上是它在文件系統中的絕對路徑名稱 。
Schema 要包括的數據庫“方案” 。許多數據庫不支持方案,而對另一些數據庫而言,它代表數據庫所有者的用戶名 。一般將它設置為 null 。
Tablemask 一個掩碼,用來描述您要檢索的表的名稱 。如果您希望檢索所有表名,則將其設為通配符 % 。請注意,SQL 中的通配符是 % 符號,而不是一般 PC 用戶的 * 符號 。
types[] 這是描述您要檢索的表的類型的 String 數組 。數據庫中通常包括許多用于內部處理的表,而對作為用戶的您沒什么價值 。如果它是空值,則您會得到所有這些表 。如果您將其設為包含字符串“TABLES”的單元素數組,您將僅獲得對用戶有用的表格 。
一個簡單的 JDBC 程序
我們已經學習了 JDBC 的所有基本功能,現在我們可以編寫一個簡單的程序,該程序打開數據庫,打印它的表名以及某一表列的內容,然后對該數據庫執行查詢 。此程序如下所示:

推薦閱讀