package org.nutz.dao.impl.jdbc.db2; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import org.nutz.dao.jdbc.ValueAdaptor; /** * 对 Oracle,Types.BOOLEAN 对于 setNull 是不工作的 其他的数据库都没有这个问题,<br> * 所以,只好把类型设成 INTEGER了 */ public class DB2BooleanAdaptor implements ValueAdaptor { public Object get(ResultSet rs, String colName) throws SQLException { boolean re = rs.getBoolean(colName); return rs.wasNull() ? null : re; } public void set(PreparedStatement stat, Object obj, int i) throws SQLException { if (null == obj) { stat.setNull(i, Types.INTEGER); } else { boolean v; if (obj instanceof Boolean) v = (Boolean) obj; else if (obj instanceof Number) v = ((Number) obj).intValue() > 0; else if (obj instanceof Character) v = Character.toUpperCase((Character) obj) == 'T'; else v = Boolean.valueOf(obj.toString()); stat.setBoolean(i, v); } } }