雅典之夏的小站
          知人者智 自知者明 Fighting!!
          一、通過(guò)DatabaseMetaData對(duì)象了解數(shù)據(jù)庫(kù)的信息



          JSP通過(guò)JDBC對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行連接以后,得到一個(gè)Connection 對(duì)象,可以從這個(gè)對(duì)象獲得有關(guān)數(shù)據(jù)庫(kù)管理系統(tǒng)的各種信息,包括數(shù)據(jù)庫(kù)中的各個(gè)表,表中的各個(gè)列,數(shù)據(jù)類型,觸發(fā)器,存儲(chǔ)過(guò)程等各方面的信息。根據(jù)這些信息,JDBC可以訪問(wèn)一個(gè)實(shí)現(xiàn)事先并不了解的數(shù)據(jù)庫(kù)。獲取這些信息的方法都是在DatabaseMetaData類的對(duì)象上實(shí)現(xiàn)的,而DataBaseMetaData對(duì)象是在Connection對(duì)象上獲得的。



          按照慣例,讓我們先來(lái)看看下面這個(gè)例子:



          package com.rongji.demo;



          import java.sql.Connection;

          import java.sql.DriverManager;

          import java.sql.Statement;

          import java.sql.DatabaseMetaData;





          public class DataConn {

          public DataConn() {

          }

          public static void main(String[] args) {

          try

          {

          //加載驅(qū)動(dòng)程序

          //下面的代碼為加載JDBD-ODBC驅(qū)動(dòng)程序

          Class.forName("oracle.jdbc.driver.OracleDriver");

          //建立連接

          //用適當(dāng)?shù)尿?qū)動(dòng)程序連接到DBMS,看下面的代碼[自行修改您所連接的數(shù)據(jù)庫(kù)相關(guān)信息]:

          String url="jdbc:oracle:thin:@192.168.4.45:1521:oemrep";

          String user = "ums";

          String password = "rongji";

          //用url創(chuàng)建連接

          Connection con=DriverManager.getConnection(url,user,password);



          //獲取數(shù)據(jù)庫(kù)的信息

          DatabaseMetaData dbMetaData = con.getMetaData();

          //返回一個(gè)String類對(duì)象,代表數(shù)據(jù)庫(kù)的URL

          System.out.println("URL:"+dbMetaData.getURL()+";");

          //返回連接當(dāng)前數(shù)據(jù)庫(kù)管理系統(tǒng)的用戶名。

          System.out.println("UserName:"+dbMetaData.getUserName()+";");

          //返回一個(gè)boolean值,指示數(shù)據(jù)庫(kù)是否只允許讀操作。

          System.out.println("isReadOnly:"+dbMetaData.isReadOnly()+";");

          //返回?cái)?shù)據(jù)庫(kù)的產(chǎn)品名稱。

          System.out.println("DatabaseProductName:"+dbMetaData.getDatabaseProductName()+";");

          //返回?cái)?shù)據(jù)庫(kù)的版本號(hào)。

          System.out.println("DatabaseProductVersion:"+dbMetaData.getDatabaseProductVersion()+";");

          //返回驅(qū)動(dòng)驅(qū)動(dòng)程序的名稱。

          System.out.println("DriverName:"+dbMetaData.getDriverName()+";");

          //返回驅(qū)動(dòng)程序的版本號(hào)。

          System.out.println("DriverVersion:"+dbMetaData.getDriverVersion());

          //關(guān)閉連接

          con.close();

          }

          catch (Exception e)

          {

          //輸出異常信息

          System.err.println("SQLException :"+e.getMessage());

          e.printStackTrace();

          }

          }

          }



          通過(guò)上面的例子,我們可以看出,DatabaseMetaData類的對(duì)象的實(shí)現(xiàn),如下語(yǔ)句

          <%

          DatabaseMetaData datameta=con.getMetaData();

          %>

          DatabaseMetaData類中提供了許多方法用于獲得數(shù)據(jù)源的各種信息,通過(guò)這些方法可以非常詳細(xì)的了解數(shù)據(jù)庫(kù)的信息。就如我們上面例子中所顯示的幾個(gè)信息[其他的方法請(qǐng)讀者參考JDK API中的DatabaseMetaData類]:



          getURL()

          返回一個(gè)String類對(duì)象,代表數(shù)據(jù)庫(kù)的URL。

          getUserName()

          返回連接當(dāng)前數(shù)據(jù)庫(kù)管理系統(tǒng)的用戶名。

          isReadOnly()

          返回一個(gè)boolean值,指示數(shù)據(jù)庫(kù)是否只允許讀操作。

          getDatabaseProductName()

          返回?cái)?shù)據(jù)庫(kù)的產(chǎn)品名稱。

          getDatabaseProductVersion()

          返回?cái)?shù)據(jù)庫(kù)的版本號(hào)。

          getDriverName()

          返回驅(qū)動(dòng)驅(qū)動(dòng)程序的名稱。

          getDriverVersion()

          返回驅(qū)動(dòng)程序的版本號(hào)。
          posted on 2005-10-27 12:51 rkind 閱讀(85) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 台北县| 尚义县| 长宁县| 河曲县| 久治县| 逊克县| 澜沧| 永丰县| 黑水县| 邢台县| 中阳县| 启东市| 郓城县| 南城县| 宁海县| 庆元县| 陆丰市| 荆州市| 德庆县| 筠连县| 大冶市| 黑龙江省| 定兴县| 大荔县| 长沙市| 姜堰市| 新平| 宝丰县| 措勤县| 通城县| 温宿县| 福安市| 周至县| 永和县| 保靖县| 新邵县| 射洪县| 雷山县| 伊宁县| 湟中县| 大兴区|