1. 程式人生 > >使用PreparedStatement操作資料庫

使用PreparedStatement操作資料庫

PreparedStatement 的執行效率高於Statement物件,對於需要多次執行的SQL語句經常使用PreparedStatement 。

與Statement的主要區別在於採用?的佔位符。

PreparedStatement 除了繼承Statement 的所有操作外還增加了一些新的操作。

使用PrepareStatement完成資料的插入操作

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() ;			// 資料庫關閉
	}
};
使用PreparedStatement 完成模糊查詢
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() ;			// 資料庫關閉
	}
};