1. 程式人生 > >JDBC 用PreparedStatement語句動態操作SQL語句

JDBC 用PreparedStatement語句動態操作SQL語句

1.Statement 和 PreparedStatement:

Statement介面只能操作靜態SQL語句(即SQL語句中操作的資料表,變數等等都是固定的,不能變化的)。而PreparedStatement介面則可以動態操作SQL語句(即SQL語句中的變數的值是可以變化的)。

2.問號“?”

問好的作用:在一個SQL語句中,把需要變化的部分用“?”代替。

如:String sql = “insert into mess(id,name)values(?,?)”;

3.PreparedStatement的用法:

(Connection conn ;)

1.PreparedStatement pstmt = conn.prepareStatement(SQL);  //建立一個PreparedStatement物件,注入SQL語句

2.pstmt.setInt() ,pstmt.setString()// 給SQL中的?賦值

3.pstmt.execute()//執行SQL語句

示例如下:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Test2 {
	public static void main(String[] args) {
		Insert(10, "tomy"); // 給資料庫插入一個數據(資料為 (10,“tomy”))
	}

	static void Insert(int id, String name) {
		String sql = "insert into usertbl(id,name)values(?,?)";
		Connection conn = DBUtil.open(); // 連線資料庫
		try {
			/* 以下4句為關鍵 */
			PreparedStatement pstmt = conn.prepareStatement(sql);// 裝載SQL語句
			pstmt.setInt(1, id); // 給SQL中第一個問號賦變數id的值
			pstmt.setString(2, name); // 給SQL中第二個問號賦變數name的值
			pstmt.execute(); // 執行SQL語句

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil.close(conn);// 關閉資料庫
		}
	}
}