更新与查询数据库

来源:互联网 发布:mac 连不上appstore 编辑:程序博客网 时间:2024/05/29 10:15
/** * 更新数据 * @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 blocke.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 blocke.printStackTrace();}finally {this.closeConnection();}return list;}

0 0
原创粉丝点击