JDBC 擷取中繼資料DatabaseMetaData,databasemetadata

來源:互聯網
上載者:User

JDBC 擷取中繼資料DatabaseMetaData,databasemetadata

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 blocke.printStackTrace();}if(pst!=null)try {pst.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(re!=null)try {re.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void main(String[] args) {try {query();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.