仅可以为插入long列的long值赋值
软件环境:
数据库,oracle 9i,用的驱动是10g 的,
spring+jdbc
public class BaseDaoJdbc extends JdbcDaoSupport implements IBaseDao {
public boolean toAdd(String tabName, Map m) {
try {
StringBuffer sbFieldPart = new StringBuffer(0);
StringBuffer sbValuePart = new StringBuffer(0);
Set s = m.keySet();
Iterator it = s.iterator();
// 设置 Set 部分
int i = 0;
while (it.hasNext()) {
String key = (String) it.next();
if (key != null) {
if (i != 0) {
sbFieldPart.append(",");
sbValuePart.append(",");
}
sbFieldPart.append(key);
sbValuePart.append("? ");
i++;
}
}
Object[] obj = new Object[i];
StringBuffer sb = new StringBuffer();
sb.append("insert into ").append(tabName).append("(").append(
sbFieldPart.toString()).append(") values ( ").append(
sbValuePart.toString()).append(")");
if (log.isInfoEnabled()) {
log.info("增加sql 语句: " + sb.toString());
}
it = s.iterator();
i = 0;
while (it.hasNext()) {
String key = (String) it.next();
// if ( (key != null) && (key.equalsIgnoreCase(locName))) {
if (key != null) {
obj[i] = m.get(key);
i++;
}
}
final Object []psobj=obj;
PreparedStatementSetter ps=new PreparedStatementSetter(){
public void setValues(PreparedStatement arg0) throws SQLException {
for(int i=0;i<psobj.length;i++){
if (psobj[i] instanceof Date) {
arg0.setTimestamp(i+1,new java.sql.Timestamp( ( (java.util.Date) psobj[i]).getTime()));
} else {
arg0.setString(i+1, psobj[i].toString());
}
}
}
};
getJdbcTemplate().update(sb.toString(),ps);
return true;
} catch (Exception e) {
log.error("增加记录出错: " + e.toString());
}
return false;
}
配置文件:
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="iBaseDao" class="org.zjecredit.common.dao.BaseDaoJdbc">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate" />
</property>
</bean>
错误提示信息:
经常会报
仅可以为插入long列的long值赋值 数据库里面是clob类型的
form提交的时候,这个字段是String类型的,用的是setString方法,
你的分析:
用10g的驱动不是可以当string处理的?
配置文件:
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="iBaseDao" class="org.zjecredit.common.dao.BaseDaoJdbc">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate" />
</property>
</bean>
错误提示信息:
经常会报
仅可以为插入long列的long值赋值 数据库里面是clob类型的
form提交的时候,这个字段是String类型的,用的是arg0.setString(i+1, psobj[i].toString());
因为这个增加的方法是共用的,存数据的时候类似于
m.put("vcCNID", name);
m.put("vcCNCID", cf.getPid());
m.put("vcTitle", cf.getTitle().trim());
m.put("clContent",cf.getContent1().trim());
m.put("vcSource", cf.getSource().trim());
m.put("dtDate", new Date());
m.put("vcplace",cf.getPlace());
m.put("isImg",cf.getIsimg());
m.put("cstate",cf.getState());
用ps.setClob又不知道哪个是clob类型的
用10g的驱动不是可以当string处理的?