| /** * 有条件的删除即删除多行 * @param condition * @param args */ public int delRow(String condition, Object[] args) throws DBAccessException { String ss = ""; int affectableRow = 0; ss = "delete from " + name + " where "; ss += condition; Connection conn = null; try { conn = database.getConnection(); PreparedStatement st = conn.prepareStatement(ss); if (args != null) { for (int i = 0; i < args.length; i++) { st.setObject(i + 1, args[i]); } } affectableRow = st.executeUpdate(); st.close(); } catch (Exception ex) { throw new DBAccessException(InforGeter.getErrorInfor(this, "delRow", ex, "删除表" + name + "中的数据时出错!")); } finally { database.disConnect(conn); } return affectableRow; } } |
使用时可以用Database对象的getTable方法传入数据库表的名称来得到一个Table对象。得到这个对象后就可以对这个数据库表进行操作了,这个类提供了六个方法根据传过来的参数对数据库表进行添加修改删除操作。代码中没有特别难懂的地方,需要注意的是我在原有代码的基础上对空值进行的处理,在查询时如果表中的数据是空值的话那么我把字段对应的Java类型放到Row对象里,因为在进行Row对象到值对象的转换时用到了java反射API必须知道Row中的字段值的类型才能去调用值对象的setXXXX方法(见Row对象的toValueObject方法)。
行对象的源码如下:
| package com.gdrj.util.database; import java.util.*; import java.math.BigDecimal; import java.lang.reflect.*; public class Row { /** * 排序,由于Hashtable不提供通过索引取得值的方法,并且其中的键值对也不是按照put上去时的顺序排列的。 * 注意:Vector中加入的对象是有序的,即按加入的顺序排列并且能够根据索引访问,可以看成是可变大小的数组 * List可以取代Vector |
|