データ操作するクラス

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);

というエラーが出てきました。なぜでしょうか?