元数据Meata data:描述数据的数据 String sql ,描述这份SQL字符串的数据叫做元数据
数据库元数据:DatabaseMetaData
参数元数据:ParameterMetaData
届国际原数据:ResultSetMetaData
/**
* DBUtials的实现
* @param sql
* @param args
*/
public void update(String sql , Object ... args){
Connection conn =null;
PreparedStatement ps = null;
try {
conn = JDBCUtil.getConn();
ps = conn.prepareStatement(sql);
// 根据参数设置
// for(int i =0 ;i< args.length ; i++){
// ps.setObject(i+1, args[i]);
// }
// 根据问号的个数设置参数
ParameterMetaData metaData = ps.getParameterMetaData();
int count = metaData.getParameterCount();
for(int i =0 ;i< count ; i++){
ps.setObject(i+1, args[i]);
}
ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtil.release(conn, ps);
}
}
/**
* DBUtials的实现
* @param sql
* @param args
*/
public T query(String sql ,ResultSetHandler handler, Object ... args){
Connection conn =null;
PreparedStatement ps = null;
ResultSet rs= null;
try {
conn = JDBCUtil.getConn();
ps = conn.prepareStatement(sql);
// 根据参数设置
// for(int i =0 ;i< args.length ; i++){
// ps.setObject(i+1, args[i]);
// }
// 根据问号的个数设置参数
ParameterMetaData metaData = ps.getParameterMetaData();
int count = metaData.getParameterCount();
for(int i =0 ;i< count ; i++){
ps.setObject(i+1, args[i]);
}
rs = ps.executeQuery();
// 定义一个接口,通过实现类去实现方法,参数为实现类;通过new接口,并且实现接口的方法;方法名handle,在接口定义时传入泛型T,由T来定义方法的返回类型,从而实现方法的通用性
T t = (T)handler.handle(rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtil.release(conn, ps);
}
}