欢迎投稿

今日深度:

JDBC获取元数据Database Meta Data

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();
		}
	}
}

www.htsjk.Com true http://www.htsjk.com/sybase/19547.html NewsArticle 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.ResultSetMetaD...
评论暂时关闭