您的位置:首页 > 数据库

更新与查询数据库

2016-07-24 15:35 381 查看
/**
* 更新数据
* @param sql SQL语句
* @param valueArray 值列表
*/
public void updateData(String sql ,Object[] valueArray){
this.setConnection();
try {
//执行SQL语句
ps=con.prepareStatement(sql);
//填充占位符
for(int i=0;i<valueArray.length;i++){
ps.setObject(i+1, valueArray[i]);
}
//跟新数据库
ps.executeUpdate();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
this.closeConnection();
}
}

/**
* 查询数据
* @param sql SQL语句
* @param beanClass 集合中存放对象的类型
* @param valueArray 值列表
* @return 查询结果的集合
*/
public List findDate(String sql,Class beanClass,Object[] valueArray){

List list = new ArrayList();
this.setConnection();

try {
ps=con.prepareStatement(sql);
if (valueArray != null) {
for(int i=0;i<valueArray.length;i++){
ps.setObject(i+1, valueArray[i]);
}
}
rs = ps.executeQuery();

//得到结果集的审视对象
//ResultSetMetaData可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。
ResultSetMetaData metaData = rs.getMetaData();

//得到结果集中查询的列数
//getColumnCount()返回此 ResultSet 对象中的列数。
int columCount = metaData.getColumnCount();

//System.out.println(columCount+" "+metaData.getColumnName(1));
while(rs.next()){
//每次循环产生新的实体对象
Object beanObj = beanClass.newInstance();

//有几列循环几次
for(int i=1;i<=columCount;i++){
//getColumnName(i)得到指定列的列名
String columnName = metaData.getColumnName(i);
System.out.println(columnName);

//getObject(columnName)得到指定列名对应的值
Object valueObj = rs.getObject(columnName);

//得到属性名对应的属性对象
Field field = beanObj.getClass().getDeclaredField(columnName);

//去掉修饰符检查
field.setAccessible(true);

//将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
field.set(beanObj, valueObj);

}
list.add(beanObj);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
this.closeConnection();
}

return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: