在MyEclipse上写Oracle的SQL语句报错

图片说明
这个项目本来是用MySQL的,我想改成Oracle,连接是连接上了,但是一使用insert就老报这个错误

public static void addA(String email, String pw, String name, String phone,
            String IDNumber) throws SQLException, ClassNotFoundException {
        String sql = "insert into admin(EMAIL,APW,ANAME,PHONE,IDNUMBER)" + "values(ADMIN_SEQ.nextval,?,?,?,?,?)";
        //"insert into admin values(?,?,?,?,?)";
        PreparedStatement ps = DataConnect.getCon().prepareStatement(sql);
        ps.setString(1, email);
        ps.setString(2, pw);
        ps.setString(3, name);
        ps.setString(4, phone);
        ps.setString(5, IDNumber);
        ps.executeUpdate(); 
        DataConnect.getCon().commit();

    }

可以把表名改一下 试一试 我不是很确定 但可以试一下

数据库连接代码没写错吗?

你先把你的sql语句放到数据库里去运行一遍,能运行再写进代码里试试。感觉你的email那个不应该对应那个nextval吧。既然报错sql语句,你先在数据库运行一遍

public static void addA(String email, String pw, String name, String phone,
        String IDNumber) throws SQLException, ClassNotFoundException {
    String sql = "insert into admin(EMAIL,APW,ANAME,PHONE,IDNUMBER) values(?,?,?,?,?)";
    //"insert into admin values(?,?,?,?,?)";
    PreparedStatement ps = DataConnect.getCon().prepareStatement(sql);
    ps.setString(1, email);
    ps.setString(2, pw);
    ps.setString(3, name);
    ps.setString(4, phone);
    ps.setString(5, IDNumber);
    ps.executeUpdate(); 
    DataConnect.getCon().commit();

}

我改成这样的话也是报一样的错误

参数个数都没对上了,前面是5个,后面加上ADMIN_SEQ.nextval有6个了,你前面加上多一个应该就没问题了