Java MySQLに情報を追加する処理について
データ操作するクラス
public class Toi3_db {
/**
* @param args
* @throws SQLException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Member mem = new Member(11,"yamasaki","yamasaki@mail.com");
Connection con = (new DBConnection()).getConnection();
MemberCtrl memctrl = new MemberCtrl(con);
boolean ret = memctrl.excuteInsert(mem);
if(ret == false){
//失敗したときの出力処理
System.out.println("INSERT失敗:");
}
}
}
処理するクラス
public class MemberCtrl {
public boolean excuteInsert(Member mem) throws SQLException,ClassNotFoundException {
try{
//SQL文を定義する
String sql="INSERT INTO T_MEMBER(id ,name, email) VALUES(?,?,?)";
System.out.println("a");
//実行するSQL文とパラメータを指定する
ps=con.prepareStatement(sql);
System.out.println("b");
ps.setInt(1, 11);
ps.setString(2, "yamasaki");
ps.setString(3, "yamasaki@mail.com");
//INSERT文を実行する
ps.executeUpdate();
}finally{
if(con!=null){
con.close();
}
}
return false;
}
}
実行すると
Exception in thread "main" java.lang.NullPointerException
at MemberCtrl.excuteInsert(MemberCtrl.java:46)
at Toi3_db.main(Toi3_db.java:21)
Toi3_db.java:21は boolean ret = memctrl.excuteInsert(mem);
MemberCtrl.java:46は ps=con.prepareStatement(sql);
なぜ起きたでしょうか? 宜しくお願い致します。
追記:
ありがとうございます。コンストラクタを入れてさきのエラーは解決しました。
しかし今度は
Exception in thread "main" java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at ctrl.MemberCtrl.excuteInsert(MemberCtrl.java:66)
at Toi3_db.main(Toi3_db.java:21)
MemberCtrl.java:66 は ps.setInt(1, 11);
Toi3_db.java:21 は boolean ret = memctrl.excuteInsert(mem);
というエラーが出てきました。なぜでしょうか?