数据库元数据对象

数据库元数据的获取(写数据库框架用)

1、什么是数据库元数据

元数据:数据库、表、列等定义的信息

2、元数据

数据库的元信息:

a、DatabaseMetaData

lConnection.getMetaData()
lDataBaseMetaData对象
getURL():返回一个String类对象,代表数据库的URL
getUserName():返回连接当前数据库管理系统的用户名。
getDatabaseProductName():返回数据库的产品名称。
getDatabaseProductVersion():返回数据库的版本号。
getDriverName():返回驱动驱动程序的名称。
getDriverVersion():返回驱动程序的版本号。
isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。

b、ParameterMeatData

lPreparedStatement. getParameterMetaData()
获得代表PreparedStatement元数据的ParameterMetaData对象。
Select * from user where name=? Andpassword=?
lParameterMetaData对象
getParameterCount()
获得指定参数的个数
getParameterType(int param)
获得指定参数的sql类型(驱动可能不支持)

c、ResultSetMeatData

lResultSet.getMetaData()
获得代表ResultSet对象元数据的ResultSetMetaData对象。
lResultSetMetaData对象
getColumnCount()
返回resultset对象的列数
getColumnName(int column)
获得指定列的名称
 getColumnTypeName(int column)
获得指定列的类型java.sql.Types

DBCPUtils.java:

package com.heima.utils;

import java.awt.image.DataBuffer;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtils {

	private static DataSource ds ;
	
	static {
		//将配置文件加载进来
		InputStream in = DBCPUtils.class.getClassLoader().getResourceAsStream("dbcpconfig.properties") ;
		Properties props = new Properties() ;
		try {
			props.load(in) ;
			ds = BasicDataSourceFactory.createDataSource(props) ;
		} catch (Exception e) {
			throw new RuntimeException("服务器忙") ;
		}
	}
	
	//提供获取练级的方法
	public static Connection getConnection(){
		try {
			return ds.getConnection() ;
		} catch (SQLException e) {
			throw new RuntimeException("服务器忙") ;
		}
	}
}
dbcpconfig.properties:
数据库元数据对象_第1张图片

Test:

package com.heima.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 org.junit.Test;

import com.heima.utils.DBCPUtils;

public class Test1 {

	// 演示或获取DataBaseMetaData
	@Test
	public void test() throws SQLException {
		// 获取连接对象
		Connection conn = DBCPUtils.getConnection();
		// 获取DataBaseMetaData对象
		DatabaseMetaData dbmd = conn.getMetaData();
		// 获取数据库产品的名称
		String name = dbmd.getDatabaseProductName();
		System.out.println(name);
	}

	// 演示获取ParameterMetaData
	@Test
	public void test1() throws SQLException {
		// 获取连接对象
		Connection conn = DBCPUtils.getConnection();
		// 创建预处理对象
		PreparedStatement pstmt = conn.prepareStatement("??????");
		// 获取ParameterMetaData对象
		ParameterMetaData pmd = pstmt.getParameterMetaData();
		// 获取参数的个数
		int n = pmd.getParameterCount();
		System.out.println(n);
	}

	// 演示获取ResultSetMetaData
	@Test
	public void test2() throws SQLException {
		// 获取连接对象
		Connection conn = DBCPUtils.getConnection();
		// 创建预处理对象
		PreparedStatement pstmt = conn.prepareStatement("select * from customer");
		//执行sql语句
		ResultSet rs = pstmt.executeQuery() ;
		// 获取ResultSetMetaData对象
		ResultSetMetaData rsmd = rs.getMetaData() ;
		//有几列
		int n = rsmd.getColumnCount() ;	
		System.out.println(n);
		for (int i = 0; i < n; i++) {
			System.out.println(rsmd.getColumnName(i+1));
		}
	}

}




你可能感兴趣的:(JavaWeb)