Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用
1,Statement對象是Java 執行數據庫操作的一個重要方法,用于在已經建立數據庫連接的基礎上,向數據庫發送要執行的SQL語句。Statement對象,用于執行不帶參數的簡單SQL語句。
Statement 對象用于將 SQL 語句發送到數據庫中。實際上有三種 Statement 對象,它們都作為在給定連接上執行SQL語句的包容器: Statement 對象用于執行不帶參數的簡單SQL語句;
PreparedStatement(它從 Statement 繼承而來)用于執行帶或不帶 IN 參數的預編譯 SQL 語句;
CallableStatement(它從 PreparedStatement 繼承而來)CallableStatement 對象用于執行對數據庫已存在的存儲過程的調用。它們都專用于發送特定類型的 SQL 語句。
上文中
第一步:創建Statement對象實例stmt后,調用該對象的executeQuery(sql)方法執行參數sql語句;當然,Statement對象還有很多方法,如executeUpdate(String sql);
第二步:根據sql語句執行查詢語句后,得出的是一個結果集或者說還是一張表,放在ResultSet 的對象rs中
第三步:循環遍歷結果集rs,rs.next()方法每次指向結果集的一項記錄或者說是一欄,循環體中調用get方法如rs.getString(“b”);參數是表的字段名。就可得到該字段中的值
2,該 PreparedStatement接口繼承Statement,并與之在兩方面有所不同:
PreparedStatement 實例包含已編譯的 SQL 語句。這就是使語句“準備好”。包含于 PreparedStatement 對象中的 SQL 語句可具有一個或多個 IN 參數。IN參數的值在 SQL 語句創建時未被指定。相反的,該語句為每個 IN 參數保留一個問號(“?”)作為占位符。每個問號的值必須在該語句執行之前,通過適當的setXXX 方法來提供。
由于 PreparedStatement 對象已預編譯過,所以其執行速度要快于 Statement 對象。因此,多次執行的 SQL 語句經常創建為 PreparedStatement 對象,以提高效率。
通過使用java.sql.preparedstatement,這個問題可以自動解決。一個preparedstatement是從java.sql.connection對象和所提供的sql字符串得到的,sql字符串中包含問號(?),這些問號標明變量的位置,然后提供變量的值,最后執行語句,例如:
string sql = "select * from people where id = ? and name = ?";//先定義要執行的sql語句 ps.setint(1,id);// 設置問號里的變量值 ps.setstring(2,name); PreparedStatement ps = connection.prepareStatement(sql); Resultset rs = ps.executequery(); while(rs.next()){String u=rs.getString("id");String p=rs.getString("name"); }使用preparedstatement的另一個優點是字符串不是動態創建的.
PreparedStatement對象較Statement對象有很好代碼的可讀性和可維護性:比如
stmt.executeUpdate("insertintotb_name(col1,col2,col2,col4)values('"+var1+"','"+var2+"',"+var3+",'"+var4+"')"); perstmt=con.prepareStatement("insertintotb_name(col1,col2,col2,col4)values(?,?,?,?)");perstmt.setString(1,var1);perstmt.setString(2,var2);perstmt.setString(3,var3);perstmt.setString(4,var4);perstmt.executeUpdate();不用我多說,對于第一種方法.別說其他人去讀你的代碼,就是你自己過一段時間再去讀,都會覺得傷心.
下面將給出一個完整的訪問數據庫的例子。
總結
以上是生活随笔為你收集整理的Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java数据库连接(JDBC)之一:JD
- 下一篇: Java连接数据库(JDBC)之三:ja