用Java编写的语句

时间:2018-02-12 22:49:57

标签: java mysql prepared-statement

我已经开始学习如何用Java编写语句。我已经在Stack Overflow上看到了具有值的预处理语句,但我想知道如何编写类似我的语句的内容来成为一个准备好的语句。 这是我的代码:

public void put(MySQLDatabase mysqlDB) {
    if (mysqlDB != null) {
      boolean bool = mysqlDB.setMySqLData("UPDATE Person SET personName = '" +
        personName +
        "', personDescr = '" + personDescr + "', personAge = " + personAge + "
        WHERE personId = " + personId);
    }
}

public void post(MySQLDatabase mysqlDB) {
  if (mysqlDB != null) {
    boolean bool = mysqlDB.setMySqLData("INSERT INTO person VALUES(" + personId +
      ", '" +
      personName + "', '" + personDescr + "', " + personAge +
      ")");
  }
}

public void delete(MySQLDatabase mysqlDB) {
  if (mysqlDB != null) {
    boolean bool = mysqlDB.setMySqLData("DELETE FROM person WHERE personId=" +
      personId);
  }
}

我不知道是否有可能这样做,我想知道我是否可以为这些查询做一个准备好的声明。

2 个答案:

答案 0 :(得分:3)

    // Creates a new connection
    Connection conn = DriverManager.getConnection(connectionUrl, user, password);

    // Prepares a PreparedStatement
    PreparedStatement prep = conn.prepareStatement("UPDATE Person SET personName = ?" +
            ", personDescr = ?, personAge = ? WHERE personId = ?");

    // Populate the statement with its parameters
    prep.setString(1, personName);
    prep.setString(2, personDescr);
    prep.setInt(3, personAge);
    prep.setLong(4, personId);

    // Execute the updates
    int numberOfRowsUpdated = prep.executeUpdate();

这要求您使用DriverManager.getConnection,这需要您注册MySQL驱动程序。这可能比在OOP方面使用MySQL Directly更好,在OOP中你必须依赖大多数抽象(取决于接口,而不是特定的实现)

答案 1 :(得分:0)

我将在这里留下一个示例和文档,以便您可以启动,这很简单,只需使用“?”添加占位符和正确的方法来完成从1开始的索引

PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                     SET SALARY = ? WHERE ID = ?");
   pstmt.setBigDecimal(1, 153833.00)
   pstmt.setInt(2, 110592)

https://docs.oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html