数据库 元数据

package com.itheima.test;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

import com.itheima.utils.C3P0Util;

/**
 * 元数据:
 *        数据库元数据
 *       参数元数据
 *       结果集元数据
 * @author wangli
 *
 */
public class MetaDataTest {

    @Test  //数据库元数据
    public void testDataBase(){
        Connection con = null;
        Statement st = null;
        try {
            con = C3P0Util.getConneciton();
            
            //获取数据库元数据
            DatabaseMetaData dmd = con.getMetaData();
            //元数据中包含的数据库名,数据库版本信息
            String productName = dmd.getDatabaseProductName();//元数据中包含的数据库名
            String version = dmd.getDatabaseProductVersion();//得到版本
            System.out.println(productName+","+version);
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            C3P0Util.release(null, st, con);
        }
    }
    @Test   //数据库元数据
    public void testParameterMetaData(){
        Connection con = null;
        PreparedStatement st = null;
        try {
            con = C3P0Util.getConneciton();
            st = con.prepareStatement("insert into account values(?,?,?)");
            //st = con.prepareStatement("?????");
            
            ParameterMetaData pmd = st.getParameterMetaData();//用于获取参数元数据对象
            
            //获取元数据 : 参数个数
            int count = pmd.getParameterCount();
            System.out.println(count+"");
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            C3P0Util.release(null, st, con);
        }
    }
    
    @Test   //结果集元数据
    public void testResultSetMetaData(){
        Connection con = null;
        PreparedStatement st = null;
        ResultSet rs = null;
        try {
            con = C3P0Util.getConneciton();
            st = con.prepareStatement("select * from account");
            rs  = st.executeQuery();
            
            //取出结果集元数据对象
            ResultSetMetaData rsmd = rs.getMetaData();
            
            //得到列数
            int count = rsmd.getColumnCount();//得到了列数
            for (int i = 1; i <=count; i++) {
                //得到每列列名
                String columnName= rsmd.getColumnName(i);
                //得到列的类型
                String columnType = rsmd.getColumnTypeName(i);
                
                System.out.println(columnName+":"+columnType);
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            C3P0Util.release(rs, st, con);
        }
    }
}
原文地址:https://www.cnblogs.com/baijin05/p/5075266.html