如何同时向SQL中用JDBC输入LONG 和String类型?
我正在用PreparedStatement向SQL发出查询命令,相关代码如下
StrSql = "update mem_netport set LongNUMa=? where ID=? and desc=?"
String []aStrtParams = String[3];
aStrtParams[0] = "12345678901";
aStrtParams[1] = "999";
aStrtParams[2] = "this is a test";
PreparedStatement ps = _CONN.prepareStatement(sSQL);
if (aStrtParams != null) {
for (int i = 0; i < aStrtParams.length; i++) {
ps.setString(i + 1, aStrtParams[i]);
}
}
result = ps.executeUpdate();
但是这时会报错
请问如何同时输入LONG类型和String类型的数据到SQL呢
------解决方案--------------------Object[]aStrtParams = Object[3];aStrtParams[0] = 12345678901L;
aStrtParams[1] = "999";
ps.setObject(i + 1, aStrtParams[i]);
------解决方案--------------------ps.setObject(i?+?1,?aStrtParams[i]);
------解决方案--------------------
理论上你给PraparedStatement赋值的过程是这样的:
ps.setLong(1, Long.parseLong("12345678901")); //big int
ps.setLong(2, Long.parseLong("999")); //big int
ps.setString(3, "this is a test"); //nvarchar
如果你用setObject的话,那么Object类型没有办法直接的转换成Long类型,所以就报错。
你上面说你用ps.setLong(i + 1, Long.parseLong(sParams[i].toString())); , 那你第三个字符串怎么办?肯定也是不行的。
所以就要判断参数对象的类型,然后分情况处理就OK了。你写一下类似于下面这样的代码:
if(sParams[i] intanceof xxx){
setXxxx....
}
能看懂吧?根据不同的类型,去set其匹配的对象类型。