JSP 简单插入不能 运行 in class

JSP simple insertion cannot run in class

我正在尝试做一个简单的插入,比如

String sql = "INSERT INTO UserBanker(firstname,lastname,gender,mobile,email)VALUES(?,?,?,?,?)";
int rowsAffected = 0;
try{

    PreparedStatement stmt=con.prepareStatement(sql);
    stmt.setString(1, "abc");
    stmt.setString(2, "abc");
    stmt.setString(3, "abc");
    stmt.setString(4, "abc");
    stmt.setString(5, "abc");
    rowsAffected = stmt.executeUpdate();
} catch (SQLException e){
    e.printStackTrace();
}

它的工作原理并且能够插入。但是当我像下面这样在 oop 中尝试这种方法时

public class User{
     ...
}

public class Banker extends User{

...

public int store(Connection con){
String sql = "INSERT INTO UserBanker(firstname,lastname,gender,mobile,email)VALUES(?,?,?,?,?)";
int rowsAffected = 0;
try{
    PreparedStatement stmt=con.prepareStatement(sql);
    stmt.setString(1, super.getFirstName());
    stmt.setString(2, super.getLastName());
    stmt.setString(3, super.getGender());
    stmt.setString(4, this.getMobile());
    stmt.setString(5, this.getEmail());
    rowsAffected = stmt.executeUpdate();

} catch (SQLException e){
    e.printStackTrace();
}
return rowsAffected;
}

...

}//end of class

我这样称呼它

Banker b1= new Banker();
...set all value...
b1.store(con);

上面的 oop 脚本 总是 return 意外结果,即 0。

The oop script above always return unexpected result which is 0.

那是因为在您的 try 块中抛出了一个 SQLException,而您在 catch 块中吞下了它。因此 rowsAffected 保留其初始值。

可能抛出异常是由于您的 insert 语句中的语法错误。从参数标记 ? 周围删除单引号 '?' 并让 JDBC 像它应该的那样为您做。

起初我认为我的对象行为发生了变化,感谢 Exbury 为我的查询指出 e.printStackTrace();输出是 'the column mobile is not valid' ,我在 table

中缺少一列