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