元数据- 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);
- }
- }
- }