エラー: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);
    

    他に間違いはありませんが、プレースホルダの数が手に1つ足りないということです.プレースホルダが多くなったり少なくなったりすると、このような問題が発生します.
  • 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);
    

    設定したシーケンス番号が重複していますが、一般的にはこのような問題はありませんが、似たような文があるのが好きでコピーして貼り付けていますが、シーケンス番号を変更するのを忘れています.しかも、まだチェックされていません.
    皆さんの役に立つことを願っています.