首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

插入数据出现的错误有关问题

2012-04-23 
插入数据出现的异常问题{.../*** 省略获取连接数据库的代码*///下面一行是向用户表中部分字段插入数据,我

插入数据出现的异常问题
{ ...
   
  /**
  * 省略获取连接数据库的代码
  */

  //下面一行是向用户表中部分字段插入数据,我在测试中运行成功,这里就不写出来。
  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对象
单步走一下循环呗
[解决办法]
探讨

肯定不是撒。
Java code

try{
conn = ds.getConnection();
conn.setAutoCommit(false);
PreparedStatement pstmt1 = conn.prepareStatement(SQL_INSERT1);
PreparedStatement pstmt2 = conn.prepareSt……

[解决办法]
有一个参数没有

热点排行