jsp通過jdbc對數據庫管理系統進行連接以后,得到一個connection 對象,可以從這個對象獲得有關數據庫管理系統的各種信息,包括數據庫中的各個表,表中的各個列,數據類型,觸發器,存儲過程等各方面的信息。根據這些信息,jdbc可以訪問一個實現事先并不了解的數據庫。獲取這些信息的方法都是在databasemetadata類的對象上實現的,而databasemetadata對象是在connection對象上獲得的。
來看看下面這個例子:
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
{
//加載驅動程序
//下面的代碼為加載jdbd-odbc驅動程序
class.forname("oracle.jdbc.driver.oracledriver");
//建立連接
//用適當的驅動程序連接到dbms,看下面的代碼[自行修改您所連接的數據庫相關信息]:
string url="jdbc:oracle:thin:@192.168.4.45:1521:oemrep";
string user = "ums";
string password = "rongji";
//用url創建連接
connection con=drivermanager.getconnection(url,user,password);
//獲取數據庫的信息
databasemetadata dbmetadata = con.getmetadata();
//返回一個string類對象,代表數據庫的url
system.out.println("url:"+dbmetadata.geturl()+";");
//返回連接當前數據庫管理系統的用戶名。
system.out.println("username:"+dbmetadata.getusername()+";");
//返回一個boolean值,指示數據庫是否只允許讀操作。
system.out.println("isreadonly:"+dbmetadata.isreadonly()+";");
//返回數據庫的產品名稱。
system.out.println("databaseproductname:"+dbmetadata.getdatabaseproductname()+";");
//返回數據庫的版本號。
system.out.println("databaseproductversion:"+dbmetadata.getdatabaseproductversion()+";");
//返回驅動驅動程序的名稱。
system.out.println("drivername:"+dbmetadata.getdrivername()+";");
//返回驅動程序的版本號。
system.out.println("driverversion:"+dbmetadata.getdriverversion());
//關閉連接
con.close();
}
catch (exception e)
{
//輸出異常信息
system.err.println("sqlexception :"+e.getmessage());
e.printstacktrace();
}
}
}
通過上面的例子,我們可以看出,databasemetadata類的對象的實現,如下語句
<%
databasemetadata datameta=con.getmetadata();
%>
databasemetadata類中提供了許多方法用于獲得數據源的各種信息,通過這些方法可以非常詳細的了解數據庫的信息。就如我們上面例子中所顯示的幾個信息[其他的方法請讀者參考jdk api中的databasemetadata類]:
geturl()
返回一個string類對象,代表數據庫的url。
getusername()
返回連接當前數據庫管理系統的用戶名。
isreadonly()
返回一個boolean值,指示數據庫是否只允許讀操作。
getdatabaseproductname()
返回數據庫的產品名稱。
getdatabaseproductversion()
返回數據庫的版本號。
getdrivername()
返回驅動驅動程序的名稱。
getdriverversion()
返回驅動程序的版本號。
新聞熱點
疑難解答