使用PreparedStatement操作資料庫
阿新 • • 發佈:2018-12-23
PreparedStatement 的執行效率高於Statement物件,對於需要多次執行的SQL語句經常使用PreparedStatement 。
與Statement的主要區別在於採用?的佔位符。
PreparedStatement 除了繼承Statement 的所有操作外還增加了一些新的操作。
使用PrepareStatement完成資料的插入操作:
使用PreparedStatement 完成模糊查詢:import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.SQLException ; import java.sql.PreparedStatement ; import java.text.SimpleDateFormat ; public class PreparedStatementDemo01 { // 定義MySQL的資料庫驅動程式 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定義MySQL資料庫的連線地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL資料庫的連線使用者名稱 public static final String DBUSER = "root" ; // MySQL資料庫的連線密碼 public static final String DBPASS = "admin" ; public static void main(String args[]) throws Exception{ // 所有異常丟擲 Connection conn = null ; // 資料庫連線 PreparedStatement pstmt = null ; // 資料庫操作 String name = "李興華" ; // 姓名 String password = "www.mldnjava.cn" ; // 密碼 int age = 30 ; // 年齡 String sex = "男" ; // 性別 String birthday = "2007-08-27" ; // 生日 java.util.Date temp = null ; temp = new SimpleDateFormat("yyyy-MM-dd").parse(birthday) ; java.sql.Date bir = new java.sql.Date(temp.getTime()) ; String sql = "INSERT INTO user(name,password,age,sex,birthday) VALUES (?,?,?,?,?) " ; Class.forName(DBDRIVER) ; // 載入驅動程式 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; pstmt = conn.prepareStatement(sql) ; // 例項化PreapredStatement物件 pstmt.setString(1,name) ; pstmt.setString(2,password) ; pstmt.setInt(3,age) ; pstmt.setString(4,sex) ; pstmt.setDate(5,bir) ; int t = pstmt.executeUpdate() ; // 執行更新 System.out.println(t); pstmt.close() ; conn.close() ; // 資料庫關閉 } };
import java.sql.Connection ; import java.sql.DriverManager ; import java.sql.SQLException ; import java.sql.ResultSet ; import java.sql.PreparedStatement ; import java.text.SimpleDateFormat ; public class PreparedStatementDemo02 { // 定義MySQL的資料庫驅動程式 public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ; // 定義MySQL資料庫的連線地址 public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ; // MySQL資料庫的連線使用者名稱 public static final String DBUSER = "root" ; // MySQL資料庫的連線密碼 public static final String DBPASS = "admin" ; public static void main(String args[]) throws Exception{ // 所有異常丟擲 Connection conn = null ; // 資料庫連線 PreparedStatement pstmt = null ; // 資料庫操作 String keyWord = "李" ; // 設定查詢關鍵字 ResultSet rs = null ; // 接收查詢結果 String sql = "SELECT id,name,password,age,sex,birthday " + " FROM user WHERE name LIKE ? OR password LIKE ? OR sex LIKE ?" ; Class.forName(DBDRIVER) ; // 載入驅動程式 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; pstmt = conn.prepareStatement(sql) ; // 例項化PreapredStatement物件 pstmt.setString(1,"%"+keyWord+"%") ; pstmt.setString(2,"%"+keyWord+"%") ; pstmt.setString(3,"%"+keyWord+"%") ; rs = pstmt.executeQuery() ; // 執行查詢 while(rs.next()){ int id = rs.getInt(1) ; String name = rs.getString(2) ; String pass = rs.getString(3) ; int age = rs.getInt(4) ; String sex = rs.getString(5) ; java.util.Date d = rs.getDate(6) ; System.out.print("編號:" + id + ";") ; System.out.print("姓名:" + name + ";") ; System.out.print("密碼:" + pass + ";") ; System.out.print("年齡:" + age + ";") ; System.out.print("性別:" + sex + ";") ; System.out.println("生日:" + d + ";") ; System.out.println("-------------------------") ; } rs.close() ; pstmt.close() ; conn.close() ; // 資料庫關閉 } };