无法使用预准备语句插入数据库

时间:2017-11-21 16:34:11

标签: java mysql database string

我试图进入一个名为services的表,它有一个id,service_name和service_type。我尝试运行它时出错。

public void insertService(String service, String serviceType) {

    try {
        st = myConn.createStatement();
        String query = "INSERT INTO services"
                         +"(service_name, service_type)"
                         +"values(?,?)";
        PreparedStatement preparedStmt = myConn.prepareStatement(query);
        preparedStmt.setString(1, service);
        preparedStmt.setString(2, serviceType);

        st.executeUpdate(query);
    } catch(Exception e) {
        System.out.println("Cannot Add service" + e);
    }

}

3 个答案:

答案 0 :(得分:1)

myConn似乎没有被定义。

Connection myConn = DriverManager.getConnection(url,user, password);

编辑1

也许是因为你在没有值的情况下执行查询?

st.executeUpdate(query);preparedStmt.executeUpdate()

编辑2

  

myConn似乎没有被定义。

     

Connection myConn = DriverManager.getConnection(url,user, password);

忽略这一点。答案是在第一次编辑中。

答案 1 :(得分:1)

您在多个地方的查询中缺少空格。尝试:

String query = "INSERT INTO services "
                         +"(service_name, service_type) "
                         +"values(?,?)";

始终建议在将查询放入代码之前手动运行查询,以验证它在语法上是否正确/有效。

答案 2 :(得分:1)

正如您所提到的,错误是MySQLSyntaxErrorException。您应该查看生成的SQL查询。

使用以下查询

String query = "INSERT INTO services "
                         +"(service_name, service_type) "
                         +"values(?,?)";

每行双引号之前的空格