PreparedStatement接口是Statement的子接口,屬于預處理操作,與直接使用Statement不同的是,PreparedStatement在操作時,是先在資料表中準備好了一條SQL語句,但是此SQL語句的具體内容暫時不設定,而是之後再進行設定。

//=================================================
// File Name : PreparedStatement_demo
//------------------------------------------------------------------------------
// Author : Common
import java.sql.*;
import java.text.SimpleDateFormat;
//主類
//Function : PreparedStatement_demo
public class PreparedStatement_demo {
//定義MySQL的資料庫驅動程式
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定義MySQL資料庫的連接配接位址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL資料庫的連接配接使用者名
public static final String DBUSER = "root";
//MySQL資料庫的連接配接密碼
public static final String DBPASS = "123456";
public static void main(String[] args) throws Exception{
// TODO 自動生成的方法存根
Connection conn = null; //資料庫連接配接
PreparedStatement pstmt = null; //資料庫操作
String name = "王五";
String password = "pwd2";
int age = 25;
String sex = "女";
String birthday = "2002-11-21";
java.util.Date temp = null; //聲明一個Date對象
//通過SimpleDateFormat類将一個字元串變成java.util.Date類型
temp = new SimpleDateFormat("yyyy-MM-dd").parse(birthday);
//通過java.util.Date取出具體的日期數,并将其變成java.sql.Date類型
java.sql.Date bir = new java.sql.Date(temp.getTime());
String sql = "INSERT INTO user(name,password,age,sex,birthday)"+"VALUES(?,?,?,?,?)";//編寫預處理SQL
Class.forName(DBDRIVER); //加載驅動程式
//連接配接MySQL資料庫時,要寫上連接配接的使用者名和密碼
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //執行個體化PreparedStatement
pstmt.setString(1, name); //設定第一個“?”的内容
pstmt.setString(2, password); //設定第二個“?”的内容
pstmt.setInt(3, age); //設定第三個“?”的内容
pstmt.setString(4, sex); //設定第四個“?”的内容
pstmt.setDate(5, bir); //設定第五個“?”的内容
pstmt.executeUpdate(); //執行資料庫更新操作,不需要SQL
pstmt.close(); //操作關閉
conn.close(); //資料庫關閉
}
}
//=================================================
// File Name : PreparedStatement_demo
//------------------------------------------------------------------------------
// Author : Common
import java.sql.*;
import java.text.SimpleDateFormat;
//主類
//Function : PreparedStatement_demo
public class PreparedStatement_demo {
//定義MySQL的資料庫驅動程式
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
//定義MySQL資料庫的連接配接位址
public static final String DBURL = "jdbc:mysql://localhost:3306/mysql_demo";
//MySQL資料庫的連接配接使用者名
public static final String DBUSER = "root";
//MySQL資料庫的連接配接密碼
public static final String DBPASS = "123456";
public static void main(String[] args) throws Exception{
// TODO 自動生成的方法存根
Connection conn = null; //資料庫連接配接
PreparedStatement pstmt = null; //資料庫操作
String keyWord = "王"; //設定查詢關鍵字
String keyWord1 = "男"; //設定查詢關鍵字
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); //加載驅動程式
//連接配接MySQL資料庫時,要寫上連接配接的使用者名和密碼
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);
pstmt = conn.prepareStatement(sql); //執行個體化PreparedStatement
pstmt.setString(1, "%"+keyWord+"%"); //設定第一個“?”的内容
pstmt.setString(2, "%"+keyWord+"%"); //設定第一個“?”的内容
pstmt.setString(3, "%"+keyWord1+"%"); //設定第一個“?”的内容
rs = pstmt.executeQuery(); //執行個體化ResultSet對象
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.println("編号:"+id);
System.out.println("名字:"+name);
System.out.println("密碼:"+pass);
System.out.println("年齡:"+age);
System.out.println("性别:"+sex);
System.out.println("生日:"+d);
}
rs.close(); //關閉結果集
pstmt.close(); //操作關閉
conn.close(); //資料庫關閉
}
}