我在db中插入一个新行,控制台中没有异常。但该行未插入表中。
String name = request.getParameter("name");
String city = request.getParameter("city");
String country = request.getParameter("country");
String query = "INSERT INTO `test`.`student`(Name,City,Country)VALUES(?,?,?);";
PreparedStatement ps = (PreparedStatement) con.prepareStatement(query);
ps.setString(1,name);
ps.setString(2,city);
ps.setString(3,country);
ps.executeUpdate();
ps.close();
答案 0 :(得分:0)
在连接查询时无需再次强制转换PreparedStatement。它应该像
Connection conn = getDBConnection();
PreparedStatement ps = con.prepareStatement(query);
删除;来自双引号内的查询
在查询中使用双引号字符串内的单引号时,首选连接运算符(+号)
答案 1 :(得分:0)
这是我测试过并可以正常工作的示例代码。将其与您的代码进行比较,以了解您做错了什么。
public void insertRowToDB(int staffID, String first_name, String last_name, int department_ID) {
Connection dbConnection = null;
try {
dbConnection = DatabaseConnection.getconnection();
if (!dbConnection.isClosed()) {
String sql = "INSERT INTO staff (staffID,first_name,last_name,department_ID) VALUES(?,?,?,?)";
PreparedStatement statement = dbConnection.prepareStatement(sql);
statement.setInt(1, staffID);
statement.setString(2, first_name);
statement.setString(3, last_name);
statement.setInt(4, department_ID);
statement.executeUpdate();
}
} catch (SQLException ex) {
Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (dbConnection!=null) {
if (!dbConnection.isClosed()) {
dbConnection.close();
}
}
} catch (SQLException ex) {
Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
答案 2 :(得分:-2)
您的代码的先验视图,没有commit
声明。
您需要在ps.close()
行之前执行此声明。
祝你好运!