插入sql查询不在db中插入行

时间:2015-10-01 20:05:25

标签: 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,Country)VALUES(?,?,?);";
        PreparedStatement ps = (PreparedStatement) con.prepareStatement(query);
        ps.setString(1,name);
        ps.setString(2,city);
        ps.setString(3,country);
        ps.executeUpdate();
        ps.close();

3 个答案:

答案 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()行之前执行此声明。

祝你好运!