SQL的PreparedStatement

时间:2015-12-23 19:37:01

标签: java mysql sql database

编写构成PreparedStatement的相应Java语句,将讲师ID设置为10101,然后找到讲师用PreparedStatement教授的课程标题,执行查询。您可以假设已经创建了一个Connection对象conn。

我理解如何制作预准备语句并执行查询。我只是不确定如何在一个

中进行两个查询
PreparedStatement pStmt = conn.prepareStatement(“update instructor set ID = 10101”); 
pStmt.setString(1,11111);
pStmt.executeUpdate();

2 个答案:

答案 0 :(得分:1)

您可以使用批量更新。请在http://tutorials.jenkov.com/jdbc/batchupdate.html中查看。

否则:

如果只想在一次调用中向DBMS发送多个命令,则需要使用BEGIN ... END块对它们进行舍入。请检查以下示例:

BEGIN
  UPDATE .... ;
  INSERT .... ;
  (...)
END;

请注意,这是伪代码。

如果您使用块BEGIN ... END,则可以发送多个更新,插入,删除等;像Oracle这样的一些数据库接受它。

答案 1 :(得分:0)

// the '?' is a placeholder for values
final String sql = "UPDATE instructor SET ID = ?"; // you're probably missing a WHERE clause here, otherwise it will update every instructor to have the same ID
// send the query to the db server for it to prepare
final PreparedStatement updateInstructorIdPstmt = conn.prepareStatement(sql);
// ... 

public void updateInstructorID(final int newId) throws SQLException {
    // set the newId as the parameter for this query execution
    updateInstructorIdPstmt.setInt(1, newId); // '1' means it's the first paramenter.
                                              // it could be 2 or 3 or whatever depending on which '?' it is in your statement
    // execute this update query
    updateInstructorIdPstmt.execute(); // executeUpdate() will return how many rows were updated, if you need to know that info
}

还有其他方法可以对此进行优化,但它应该让您走上正确的道路。以这种方式执行此操作将允许您继续执行给定的准备语句的查询。您可以拥有多个准备好的报表,每个报表都有自己的查询支持。