{ ...
/**
* 省略获取连接数据库的代码
*/
//下面一行是向用户表中部分字段插入数据,我在测试中运行成功,这里就不写出来。
ps=con.prepareStatement(insert into user(...) values(...));
/**
* 省略一些类似ps.setInt(1,"");
*/
if(ps.executeUpdate()>0){
ps=con.prepareStatement("insert into information(...) values(...)");
/**
*省略一些类似ps.setInt(1,"");
*/
}
...
}
问题来了,两条插入语句分别测试都成功了。弄成上面那种,就出现异常了:
No value specified for parameter 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.PreparedStatement.checkAllParametersSet(PreparedStatement.java:2578)
at com.mysql.jdbc.PreparedStatement.fillSendPacket(PreparedStatement.java:2554)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2401)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
这个问题怎么解决?是不是不能这样向两张表中插入数据啊?跪求高手解答
------解决方案--------------------
检查下代码吧. 看看具体是哪一个sql语句执行后报错的.
注意下参数类型是否匹配, setInt那么值肯定得int, 数据库该字段也应该为int.
然后参数个数是否正确.后面set参数值的个数是否和上面sql语句里面?号数量一致.
------解决方案--------------------
No value specified for parameter 1
很明显是第2个参数设置有问题。把你具体的SQL语句发出来看看、
------解决方案--------------------
肯定不是撒。
- Java code
try{ conn = ds.getConnection(); conn.setAutoCommit(false); PreparedStatement pstmt1 = conn.prepareStatement(SQL_INSERT1); PreparedStatement pstmt2 = conn.prepareStatement(SQL_INSERT2); pstmt1.executeUpdate(); pstmt2.executeUpdate(); conn.commit();} catch (SQLException e) { conn.rollback();}
------解决方案--------------------
No value specified for parameter 1
第一个对象没值么,有可能是创建的最后一个prestmt对象
单步走一下循环呗
------解决方案--------------------
------解决方案--------------------
有一个参数没有