使用JDBC創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象(3)

字號(hào):

使用JDBC創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象(3)
    · 訪問(wèn)數(shù)據(jù)庫(kù)
    一旦連接到數(shù)據(jù)庫(kù),就可以請(qǐng)求表名以及表列的名稱和內(nèi)容等信息,而且您可以運(yùn)行 SQL 語(yǔ)句來(lái)查詢數(shù)據(jù)庫(kù)或者添加或修改其內(nèi)容。可用來(lái)從數(shù)據(jù)庫(kù)中獲取信息的對(duì)象有:
    DatabaseMetaData 有關(guān)整個(gè)數(shù)據(jù)庫(kù)的信息:表名、表的索引、數(shù)據(jù)庫(kù)產(chǎn)品的名稱和版本、數(shù)據(jù)庫(kù)支持的操作。
    ResultSet 關(guān)于某個(gè)表的信息或一個(gè)查詢的結(jié)果。您必須逐行訪問(wèn)數(shù)據(jù)行,但是您可以任何順序訪問(wèn)列。
    ResultSetMetaData 有關(guān)ResultSet中列的名稱和類型的信息。
    盡管每個(gè)對(duì)象都有大量的方法讓您獲得數(shù)據(jù)庫(kù)元素的極為詳細(xì)的信息,但在每個(gè)對(duì)象中都有幾種主要的方法使您可獲得數(shù)據(jù)的最重要信息。然而,如果您希望看到比此處更多的信息,建議您學(xué)習(xí)文檔以獲得其余方法的說(shuō)明。
    · ResultSet
    ResultSet 對(duì)象是 JDBC 中最重要的單個(gè)對(duì)象。從本質(zhì)上講,它是對(duì)一個(gè)一般寬度和未知長(zhǎng)度的表的一種抽象。幾乎所有的方法和查詢都將數(shù)據(jù)作為 ResultSet 返回。 ResultSet 包含任意數(shù)量的命名列,您可以按名稱訪問(wèn)這些列。它還包含一個(gè)或多個(gè)行,您可以按順序自上而下逐一訪問(wèn)。在您使用 ResultSet 之前,必須查詢它包含多少個(gè)列。此信息存儲(chǔ)在 ResultSetMetaData 對(duì)象中。
    // 從元數(shù)據(jù)中獲得列數(shù) ResultSetMetaData rsmd; rsmd = results.getMetaData(); numCols = rsmd.getColumnCount();
    當(dāng)您獲得一個(gè)ResultSet時(shí),它正好指向第一行之前的位置。您可以使用 next() 方法得到其他每一行,當(dāng)沒(méi)有更多行時(shí),該方法會(huì)返回 false 。由于從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)可能會(huì)導(dǎo)致錯(cuò)誤,您必須始終將結(jié)果集處理語(yǔ)句包括在一個(gè) try 塊中。
    try
    {
    rsmd = results.getMetaData();
    numCols = rsmd.getColumnCount();
    boolean more = results.next();
    while (more)
    {
    for (i = 1; i <= numCols; i++)
    System.out.print(results.getString(i)+" ");
    System.out.println();
    more = results.next();
    }
    results.close();
    }
    catch(Exception e)
    {System.out.println(e.getMessage());}