【web】赵雅智_元数据

元数据- DataBaseMetaData

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

【实例】

DBManager_c3p0.java

package com.hbsi.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mysql.jdbc.Statement;

public class DBManager_c3p0 {
	
	private static ComboPooledDataSource ds = null;
	
	static{
		try{
			//创建连接池			
			ds = new ComboPooledDataSource("mysql");
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() throws SQLException{
		return ds.getConnection();
	}
	

	public static void closeDB(Connection con,PreparedStatement ps,ResultSet rs){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(ps!=null){
			try {
				ps.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(con!=null){
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}


DingYiMessage.java

package com.hbsi.yuan;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import com.hbsi.util.DBManager_c3p0;

public class DingYiMessage {
	/**
	 * 数据库元数据
	 */
	public static void main(String[] args) {
		Connection conn = null;
		
		try {
			//获取链接
			conn = DBManager_c3p0.getConnection();
			//获取元数据
			DatabaseMetaData meta = (DatabaseMetaData) conn.getMetaData();
			//获取名称
			System.out.println(meta.getDatabaseProductName());
			//获取URL
			System.out.println(meta.getURL());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBManager_c3p0.closeDB(conn, null, null);
		}
		

	}

}



元数据- ParameterMetaData 

  • PreparedStatement . getParameterMetaData() 
    • 获得代表PreparedStatement元数据的ParameterMetaData对象。 
    • Select * from user where name=? And password=?
  • ParameterMetaData对象
    • getParameterCount() 获得指定参数的个数
    • getParameterType(int?param) 获得指定参数的sql类型

CanShu.java

package com.hbsi.yuan;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import com.hbsi.util.DBManager_c3p0;

public class CanShu {

	/**
	 * 参数的元数据
	 */
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement st = null;
		
		try {
			conn = DBManager_c3p0.getConnection();
			String sql ="select * from admin where name=? and password=?";
			
			st = conn.prepareStatement(sql);
			//几个参数
			ParameterMetaData pmeta = st.getParameterMetaData();
			System.out.println(pmeta.getParameterCount());
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBManager_c3p0.closeDB(conn, null, null);
		}
		

	}
}



Tip:元数据- ResultSetMetaData 

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

JieGuoJi.java

package com.hbsi.yuan;

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

import com.hbsi.util.DBManager_c3p0;

public class JieGuoJi {
	/**
	 * 结果集元数据
	 */
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement st = null;
		ResultSet rs = null;
		
		try {
			conn = DBManager_c3p0.getConnection();
			String sql ="select * from admin";
			
			st = conn.prepareStatement(sql);
			
			rs = st.executeQuery();
			
			ResultSetMetaData rmeta = rs.getMetaData();
			
			//有几列
			System.out.println(rmeta.getColumnCount());
			System.out.println(rmeta.getColumnName(1));
			System.out.println(rmeta.getColumnName(2));
			System.out.println(rmeta.getColumnName(3));
			
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			DBManager_c3p0.closeDB(conn, null, null);
		}
		

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值