Java 有没有办法将参数作为insert的值传递到sql表中?
我想将mySurname作为一个值插入mysql表中(使用java、derby编写) 有没有办法做到这一点Java 有没有办法将参数作为insert的值传递到sql表中?,java,sql,Java,Sql,我想将mySurname作为一个值插入mysql表中(使用java、derby编写) 有没有办法做到这一点 public void addPatient(String mySurname){ try { statement.execute("INSERT INTO patients (id_patient,surname) VALUES(1,mySurname)"); } catch (SQLEx
public void addPatient(String mySurname){
try {
statement.execute("INSERT INTO patients (id_patient,surname) VALUES(1,mySurname)");
} catch (SQLException ex) {
Logger.getLogger(PatientBase.class.getName()).log(Level.SEVERE, null, ex);
}
}
最佳实践是首先实际构建一个PreparedStatement,然后绑定变量,您可以检查。因此,您的问题的简短答案是“是”,您可以 这里有几件事 首先,尝试打开同一块中的所有数据库资源,或使用函数嵌套块。其次,始终在finally块中关闭语句和资源(或使用try with resources语法)。第三,如果您知道要插入值,则更喜欢使用executeUpdate而不是平面执行 下面是编写示例的更好方法:
public void updatePatient(String mySurname) {
try(conn = yourDataSource.getConnection()) {
addPatient(mySurname, conn);
}
}
public void addPatient(String mySurname, Connection con) {
try(stmt = conn.prepareStatement("INSERT INTO patients (id, surname) VALUES (?, ?)") {
stmt.setInt(1, 1);
stmt.setString(2, mySurname);
int numRowsAffected = stmt.executeUpdate();
Logger.getLogger(PatientBase.class).log(Level.DEBUG, numRowsAffected + " were inserted");
} catch (SQLException ex) {
Logger.getLogger(PatientBase.class).log(Level.SEVERE, null, ex);
}
}
这回答了你的问题吗?