程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> JDBC獲取元數據Database Meta Data

JDBC獲取元數據Database Meta Data

編輯:SyBase教程

JDBC獲取元數據Database Meta Data


package org.data.jdbc;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;


public class Jdbc {

	//數據庫連接地址
	private static final String url="jdbc:mysql://localhost:3306/data";
	//用戶名密碼
	private static final String user="root";
	private static final String pwd="123456";

	/***
	 * 數據庫查詢
	 * @throws ClassNotFoundException 
	 */
	public static void query() throws ClassNotFoundException{
		Connection conn=null;
		java.sql.PreparedStatement pst=null;
		ResultSet re=null;
		/*
		 * DBC提供了DatabaseMetaData來封裝數據庫連接對應的數據庫信息,通過Connection的getMetaData方法來獲取該對象。
		 * DatabaseMetaData接口通常數據庫驅動提供商完成實現,其作用是讓用戶了解數據庫的底層信息。
		 * 使用該接口可以了解數據庫底層的實現,便於完成多個數據庫的相互切換。
		 */
		 DatabaseMetaData metadata=null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn=DriverManager.getConnection(url, user, pwd);		
			
			metadata = conn.getMetaData();
			System.out.println("數據庫已知的用戶: "+ metadata.getUserName());   
	         System.out.println("數據庫的系統函數的逗號分隔列表: "+ metadata.getSystemFunctions());   
	         System.out.println("數據庫的時間和日期函數的逗號分隔列表: "+ metadata.getTimeDateFunctions());   
	         System.out.println("數據庫的字符串函數的逗號分隔列表: "+ metadata.getStringFunctions());   
	         System.out.println("數據庫供應商用於 'schema' 的首選術語: "+ metadata.getSchemaTerm());   
	         System.out.println("數據庫URL: " + metadata.getURL());   
	         System.out.println("是否允許只讀:" + metadata.isReadOnly());   
	         System.out.println("數據庫的產品名稱:" + metadata.getDatabaseProductName());   
	         System.out.println("數據庫的版本:" + metadata.getDatabaseProductVersion());   
	         System.out.println("驅動程序的名稱:" + metadata.getDriverName());   
	         System.out.println("驅動程序的版本:" + metadata.getDriverVersion());   
	         System.out.println("驅動程序的版本:" + metadata.getTableTypes());  
	         System.out.println("............................................");
	         pst= conn.prepareStatement("select * from customerinfo");
	         
	         //獲取數據庫列
	         re=pst.executeQuery();
	         //數據庫列名
	         ResultSetMetaData data= re.getMetaData();
	         //getColumnCount 獲取表列個數
	         for(int i=1;i<=data.getColumnCount();i++){
	        	 //獲取列表 index 從1開始、列名、列類型、列的數據長度
	        	 System.out.println(data.getColumnName(i)+"\t"+data.getColumnTypeName(i)+"\t"+data.getColumnDisplaySize(i));
	         }
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			closeConnection(conn, pst, re);
		}   
	}
	

	/**
	 * 關閉數據庫鏈接
	 * @param conn
	 * @param pst
	 * @param re
	 */
	public static void closeConnection(Connection conn,PreparedStatement pst,ResultSet re){
		
		if(conn!=null)
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		if(pst!=null)
			try {
				pst.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		if(re!=null)
			try {
				re.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	
	public static void main(String[] args) {
		try {
			query();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved