Spring中jdbctemplet的时候如果有需要插入null的应该怎么处理啊!原代码如下啊:
String strSql = "insert into table ( filed1,filed2) values (?,?)";
Object[] _obj=new Object[2];
_obj[0] = System.currentTimeMillis();
_obj[1] = null;
jdbctemplet.update(strSql,_obj);后台打印出来语句:
insert into table ( filed1,filed2) values ('1184841010859','null')后台提示错误:
PreparedStatementCallback; uncategorized SQLException for SQL [insert into table ( filed1,filed2) values (?,?)]; SQL state [null]; error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [insert into table ( filed1,filed2) values (?,?)]; SQL state [null]; error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型
java.sql.SQLException: 无效的列类型Spring的jdbctemplet怎么设置能打印出来这样的语句
insert into table (filed1,filed2) values ('1184841010859',null)===========================这样没问题
如果不插入null就不会出错
String strSql = "insert into table ( filed1,filed2) values (?,?)";
Object[] _obj=new Object[2];
_obj[0] = System.currentTimeMillis();
_obj[1] = "test";
jdbctemplet.update(strSql,_obj);
String strSql = "insert into table ( filed1,filed2) values (?,?)";
Object[] _obj=new Object[2];
_obj[0] = System.currentTimeMillis();
_obj[1] = null;
jdbctemplet.update(strSql,_obj);后台打印出来语句:
insert into table ( filed1,filed2) values ('1184841010859','null')后台提示错误:
PreparedStatementCallback; uncategorized SQLException for SQL [insert into table ( filed1,filed2) values (?,?)]; SQL state [null]; error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [insert into table ( filed1,filed2) values (?,?)]; SQL state [null]; error code [17004]; 无效的列类型; nested exception is java.sql.SQLException: 无效的列类型
java.sql.SQLException: 无效的列类型Spring的jdbctemplet怎么设置能打印出来这样的语句
insert into table (filed1,filed2) values ('1184841010859',null)===========================这样没问题
如果不插入null就不会出错
String strSql = "insert into table ( filed1,filed2) values (?,?)";
Object[] _obj=new Object[2];
_obj[0] = System.currentTimeMillis();
_obj[1] = "test";
jdbctemplet.update(strSql,_obj);
感谢他了
也不能挨个判断,因为从request里面取得的数据太多
大概代码都是
String one= request.getParameter(“”);
String two= request.getParameter(“”);
.
.
.
String hundred= request.getParameter(“”);
挨个判断如果是某个类型,就赋予该类型的值太复杂了阿
我想问题如下:
1 insert into table ( filed1,filed2) values ('1184841010859','null')
filed2是int形的,而LZ插入的是string形的.所以出错.
2 filed2的字段设为不允许为空,而LZ插入的值的变量没得到,出错.
3我想知道 与filed2对应的值 是什么.就是你第二个占位符的值 ,我想问题出现在那
在映射值的时候用sql包里面的NULL常量
但是后台取出的数值就是null这时候用spring的jdbctemplet插入的时候就会有问题!
因为他把null认为是'null',我想知道的是怎么设置能让jdbctemplet拼成的sql是
insert into table (filed1,filed2) values ('1184841010859',null)而且不是insert into table ( filed1,filed2) values ('1184841010859','null')
这是我的代码String strSql = "insert into table ( filed1,filed2) values (?,?)";
Object[] _obj=new Object[2];
_obj[0] = System.currentTimeMillis();
_obj[1] = null;
jdbctemplet.update(strSql,_obj);
因为你用的是占位符,如果filed2是string形的 那其占位符必然也是string形的.
有可能是int类型的啊!
我在尝试这样表达一下我的问题!我的意思是:String strSql = "insert into table ( filed1,filed2) values (?,?)";
Object[] _obj=new Object[2];
_obj[0] = System.currentTimeMillis();
_obj[1] = null;
jdbctemplet.update(strSql,_obj);
_obj[1]可能是任何类型,(这个等于null的不一定是String有可能是int)
既:
spring怎么设置,也就是jdbctemplet这个对象怎么用,能实现这样的效果!
insert into table (filed1,filed2) values ('1184841010859',null)而且不是insert into table ( filed1,filed2) values ('1184841010859','null')也就是说只要其中一个对象是null,sql语句就是null而不是'null'
insert into table(filed) value(null)
我以前用jdbc的时候
直接
String strSql ="insert into table(filed) value(null)"
Stmt.executeUpdate(strSql );就可以了啊
String strSql = "insert into table ( filed1,filed2) values (?,?)";
Object[] _obj=new Object[2];
_obj[0] = System.currentTimeMillis();
_obj[1] = null;
jdbctemplet.update(strSql,_obj);
结果现在反而不行啊系统以为我是"insert into table ( filed1,filed2) values (xxxx,'null')";================================其实_obj[1] = null是我为了表达意思啊
其实应该是!
_obj[1] = request.getParameter("xx") ;
request.getParameter("xx") ;如果不是必须输入项就可能是null啊!
可是jdbctemplet这个对象如果我插入的是null !
就给我认成'null'
并且第二个字段没准阿
有可能是int有可能是String
所以我的问题就在这里拉
我希望直接就是NULL的插入而不要让我通过判断类型而插入不同的啊。。 现在程序已经开发完了所以逐一改变会很复杂啊
把insert into table ( filed1,filed2) values (?,?)改成insert into table ( filed1,filed2) values (变量1,变量2)
public static void setParameterValue(
PreparedStatement ps, int paramIndex, int sqlType, String typeName, Object inValue)
throws SQLException { if (logger.isDebugEnabled()) {
logger.debug("Setting SQL statement parameter value: column index " + paramIndex +
", parameter value [" + inValue +
"], value class [" + (inValue != null ? inValue.getClass().getName() : "null") +
"], SQL type " + (sqlType == SqlTypeValue.TYPE_UNKNOWN ? "unknown" : Integer.toString(sqlType)));
} if (inValue == null) {
if (sqlType == SqlTypeValue.TYPE_UNKNOWN) {
ps.setNull(paramIndex, Types.NULL);
}
else if (typeName != null) {
ps.setNull(paramIndex, sqlType, typeName);
}
else {
ps.setNull(paramIndex, sqlType);
}
}