1. 程式人生 > >分別使用PreparedStatement和Statement對mysql資料庫進行建立表,增加資料,查詢資料和刪除資料過程

分別使用PreparedStatement和Statement對mysql資料庫進行建立表,增加資料,查詢資料和刪除資料過程

在使用eclipse工具編寫Java程式碼連線資料庫並對資料庫進行處理時,總會用到對資料的增刪改查操作。那麼這個

時候就用到了java自帶的sql庫中的PreparedStatement或者Statement了。

其實PreparedStatement和Statement使用起來很相似,我認為二者之間的不同點也就是PreparedStatements可以

對資料進行批處理(使用addBatch()方法),而Statement只能對單個數據進行處理。

我將兩種寫法都寫到同一個類中通過主函式呼叫的方法實現,具體程式碼如下(完整程式碼,經測試):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class PutinStorage {
	//使用PreparedStatement對mysql資料庫進行建立表,增加資料,查詢資料和刪除資料過程
	public static void process1(){
		System.out.println("process1");
		String sql_url = "jdbc:mysql://localhost:3306/test";	//資料庫路徑(一般都是這樣寫),test是資料庫名稱
		String name = "root";		//使用者名稱
		String password = "123456";	//密碼
		Connection conn;
		PreparedStatement preparedStatement = null;

		try {
			Class.forName("com.mysql.jdbc.Driver");		//連線驅動
			conn = DriverManager.getConnection(sql_url, name, password);	//連線資料庫
			if(!conn.isClosed())
				System.out.println("成功連線資料庫");
			//新建表
			String sql = "create table aa(id int,name text)";
			preparedStatement = conn.prepareStatement(sql);		
			preparedStatement.executeUpdate();
			
			//在表中新增內容
//			preparedStatement.executeUpdate("insert into aa values(4,'amy')");
			
			preparedStatement = conn.prepareStatement("insert into aa values(1,'張三')");
			preparedStatement.executeUpdate();
			preparedStatement = conn.prepareStatement("insert into aa values(2,'李四')");
			preparedStatement.executeUpdate();
			preparedStatement = conn.prepareStatement("insert into aa values(3,'王五')");
			preparedStatement.executeUpdate();
			
			//查詢表內容
			System.out.println("第一次查詢表內容(刪除前)");
			preparedStatement = conn.prepareStatement("select * from aa");
			ResultSet result1 = preparedStatement.executeQuery();
			while(result1.next())
				System.out.println(result1.getInt("id")+"\t"+result1.getString("name"));
			
			//刪除表中資料
			preparedStatement = conn.prepareStatement("delete from aa where id = 2");
			preparedStatement.executeUpdate();
			
			//查詢表中內容
			System.out.println("第二次查詢表內容(刪除後)");
			preparedStatement = conn.prepareStatement("select * from aa");
			ResultSet result2 = preparedStatement.executeQuery();
			while(result2.next())
				System.out.println(result2.getInt("id")+"\t"+result2.getString("name"));
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("未成功載入驅動。");
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("未成功開啟資料庫。");
			e.printStackTrace();
		}
	}
	
	//使用Statement對mysql資料庫進行建立表,增加資料,查詢資料和刪除資料過程
	public static void process2(){
		System.out.println("process2");
		String sql_url = "jdbc:mysql://localhost:3306/test";	//資料庫路徑(一般都是這樣寫),test是資料庫名稱
		String name = "root";		//使用者名稱
		String password = "123456";	//密碼
		Connection conn;
		Statement statement = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");		//連線驅動
			conn = DriverManager.getConnection(sql_url, name, password);	//連線資料庫
			if(!conn.isClosed())
				System.out.println("成功連線資料庫");
			statement = conn.createStatement();
			//新建表
			String sql = "create table bb(id int,name text)";
			statement.executeUpdate(sql);
			
			//在表中新增內容
			statement.executeUpdate("insert into bb values(1,'張三')");
			statement.executeUpdate("insert into bb values(2,'李四')");
			statement.executeUpdate("insert into bb values(3,'王五')");
			
			//查詢表內容
			System.out.println("第一次查詢表內容(刪除前)");
			ResultSet result1 = statement.executeQuery("select * from bb");
			while(result1.next())
				System.out.println(result1.getInt("id")+"\t"+result1.getString("name"));
			
			//刪除表中資料
			statement.executeUpdate("delete from bb where id = 2");
			
			//查詢表內容
			System.out.println("第二次查詢表內容(刪除後)");
			ResultSet result2 = statement.executeQuery("select * from bb");
			while(result2.next())
				System.out.println(result2.getInt("id")+"\t"+result2.getString("name"));
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("未成功載入驅動。");
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("未成功開啟資料庫。");
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args){
		process1();
//		process2();
	}
}
其中使用PreparedStatement時的preparedStatement.executeUpdate("insert into aa values(4,'amy')");語句與
preparedStatement = conn.prepareStatement("insert into aa values(1,'張三')");
preparedStatement.executeUpdate();
所表達的含義相同。

執行結果分別為:

(1)、process1:

process1
成功連線資料庫
第一次查詢表內容(刪除前)
1張三
2李四
3王五
第二次查詢表內容(刪除後)
1張三
3王五

(2)、process2:

process2
成功連線資料庫
第一次查詢表內容(刪除前)
1張三
2李四
3王五
第二次查詢表內容(刪除後)
1張三
3王五