1. 程式人生 > >PreparedStatement的executeQuery、executeUpdate和execute

PreparedStatement的executeQuery、executeUpdate和execute

    一般的使用習慣Select語句使用executeQuery()方法執行,Delete、Update、Insert語句使用executeUpdate()方法執行,而Create和Drop語句使用execute()方法執行,當然也可以使用executeUpdate()方法。 PreparedStatement介面提供了三種執行 SQL 語句的方法:executeQuery、executeUpdate 和 execute。 使用哪一個方法由 SQL 語句所產生的內容決定。

【1】方法executeQuery 用於產生單個結果集的語句,例如 SELECT 語句。 被使用最多的執行 SQL 語句的方法是 executeQuery。這個方法被用來執行 SELECT 語句,它幾乎是使用最多的 SQL 語句。

【2】方法executeUpdate 用於執行 INSERT、UPDATE 或 DELETE 語句以及 SQL DDL(資料定義語言)語句,例如 CREATE TABLE 和 DROP TABLE。 INSERT、UPDATE 或 DELETE 語句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一個整數,指示受影響的行數(即更新計數)。 對於 CREATE TABLE 或 DROP TABLE 等不操作行的句,executeUpdate 的返回值總為零。 使用executeUpdate方法是因為在 createTableCoffees 中的 SQL 語句是 DDL (資料定義語言)語句。建立表,改變表,刪除表都是 DDL 語句的例子,要用 executeUpdate 方法來執行。你也可以從它的名字裡看出,方法 executeUpdate 也被用於執行更新表 SQL 語句。實際上,相對於建立表來說,executeUpdate 用於更新表的時間更多,因為表只需要建立一次,但經常被更新。

【3】方法execute 用於執行返回多個結果集、多個更新計數或二者組合的語句。也可用於執行 INSERT、UPDATE 或 DELETE 語句。 用法舉例:

① 增加、修改、刪除都用execute(),也可用executeUpdate(),針對於INSERT、UPDATE 或 DELETE 語句 public int addAirEnvironmentPresent(M_AirEnviromentPresentDTO airDTO){ int index = 1; String sql = "insert into airPresent(airForecastPlace,ForecastTime,TSPvalue,remark) values(?,?,?,?)"; try { ps = conn.prepareStatement(sql); ps.setString(index++, airDTO.getAirForecastPlace()); ps.setString(index++, airDTO.getForecastTime()); ps.setString(index++, airDTO.getTSPvalue()); ps.setString(index++, airDTO.getRemark()); ps.execute(); } catch (SQLException e) { e.printStackTrace(); } return 1; }

② 查詢呼叫executeQuery(),針對於SELECT語句 public ArrayList getAirEnvironmentPresentAll(){ ArrayList list = new ArrayList(); String sql = "select * from airPresent"; try { ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next()){ dto = new M_AirEnviromentPresentDTO(); dto.setId(rs.getInt("id")); dto.setAirForecastPlace(rs.getString("airForecastPlace")); dto.setForecastTime(rs.getString("forecastTime")); dto.setTSPvalue(rs.getString("tspvalue")); dto.setRemark(rs.getString("remark")); list.add(dto); } } catch (SQLException e) { e.printStackTrace(); } return list; }