Java 插入sql查询而不是在数据库中插入行
我正在db中插入新行,控制台中没有异常。但该行不会插入到表中Java 插入sql查询而不是在数据库中插入行,java,jdbc,Java,Jdbc,我正在db中插入新行,控制台中没有异常。但该行不会插入到表中 String name = request.getParameter("name"); String city = request.getParameter("city"); String country = request.getParameter("country"); String query = "INSERT INTO `test`.`student`(Name,City,Co
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();
在代码的先验视图中,没有
commit
语句
您需要在ps.close()
行之前执行此语句
致以最良好的祝愿 - 连接查询时无需再次强制转换PreparedStatement。应该是
Connection conn = getDBConnection(); PreparedStatement ps = con.prepareStatement(query);
- 删除该文件;从双引号内的查询
- 在查询的双引号字符串中使用单引号时,首选连接运算符(+符号)
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);
}
}
}
executeUpdate
返回什么?请删除从sql查询中选择code>,然后重试。您准备好连接了吗?使用此连接的其他查询是否有效?@voidmain请尝试提交。我在下面看到了dxdy的评论,但并非所有jvm都有autocommit=true。当您认为您的工作已经完成时,提交是一种很好的做法。默认情况下,JDBC会自动提交语句。@dxdy并非所有jvm都会这样做。此外,它还可以在连接级别设置为true或false默认情况下,连接对象处于自动提交模式,这意味着它在执行每个语句后自动提交更改。如果已禁用自动提交模式,则必须显式调用方法commit以提交更改;否则,数据库更改将不会被保存。”我假设,如果OP选择了一个处理方式不同的JDBC驱动程序,他们会选择并意识到它。同样的情况也适用于手动设置,我会假设如果OP尝试手动禁用它,他们会意识到它。