报错:No value specified for parameter 3 的解决办法

No value specified for parameter 3

在用JDBC连接数据库进行相应的操作时,报出如下错误,找了找原因发现有一下几点,希望可以解决你们的问题

  • sql语句的占位符与后面设置占位符的值的数量不匹配
PreparedStatement pst=gxmconn.prepareStatement("insert into messages(myId,friendId,friendName,message) values(?,?,?,?,?)");//这里
   		pst.setInt(1, myId);
   		pst.setInt(2, friendId);
   		pst.setString(3, friendName);
   		pst.setString(4, message);

其它地方没有错误,就是占位符的数量手欠多写了一位。占位符多了或者少了都会出现这样的问题。

  • sql语句的占位符赋值时序号出现重复
 PreparedStatement pst=gxmconn.prepareStatement("insert into messages(myId,friendId,friendName,message) values(?,?,?,?)");
   		pst.setInt(1, myId);
   		pst.setInt(2, friendId);
   		pst.setString(2, friendName);//这里出现重复
   		pst.setString(4, message);

设置的序号出现了重复,其实一般不会出现这种问题,但是我在喜欢有类似的语句就复制粘贴,但是老是忘了改序号,而且居然还没检查出来。

希望能帮到大家。

你可能感兴趣的:(编程中的常用报错解决,sql,jdbc,mysql)