仅可以为插入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处理的?
相关推荐
ORA-01461 仅可以为插入 LONG 列的 LONG 值赋值”解决办法
“ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值”
Oracle_11g_JDBC_ojdbc6.rar
ORA-01461 仅可以为插入 LONG 列的 LONG 值赋值”解决办法,jar包冲突,解决办法。
sqlserver 不能将值NULL插入列id(列不允许有空值解决)
错误现象: Microsoft OLE DB Provider for SQL Server 错误 ‘80040e2f’不能将值 NULL 插入列 ‘id’,表 ‘web.dbo.dingdan’;列不允许有空值。INSERT 失败。 /Untitled-2.asp,行 115 原因分析: SQL数据库中,建立表时没有将id列标识规范设置为“是”。所以大家在创建表的时候一定将id设为自动增加id,标识之类的。 解决办法: 点击表,修改,设置id列标识规范为“是”,如下图。 您可能感兴趣的文章:SqlServer下通过XML拆分字符串的方
Pandas DataFrame数据的更改、插入新增的列和行的方法
主要介绍了Pandas DataFrame数据的更改、插入新增的列和行的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
SQL获取刚插入的记录的自动增长列ID的值
假设表结构如下: CREATE TABLE TestTable ( id int identity, CreatedDate datetime ) SQL2005获得新增行的自动增长列的语句如下: insert into TestTable (CreatedDate) output inserted.id values (getdate()) SQL2000获得新增行的自动增长列的语句如下: insert into TestTable (CreatedDate) values (getdate()) select @@IDENTITY 在C



