1. 程式人生 > >Java對MySQL資料庫進行操作【java】

Java對MySQL資料庫進行操作【java】

資料庫幾乎是每一個應用型的程式都會用到,學會如何高效操作資料庫也是開發一個重點。今天我總結了具體的操作步驟以及注意點。Java訪問資料庫主要用的方法是JDBC,是java語言中用來規範客戶端程式如何來訪問資料庫的應用程式介面,提供了諸如查詢和更新資料庫中資料的方法,接下來進行總結。

一、操作的一般過程

1、連線資料庫

2、呼叫Class.forName()方法載入驅動程式。

3、呼叫DriverManager物件的getConnection()方法,獲得一個Connection物件。

4、建立一個Statement物件,準備一個SQL語句,這個SQL語句可以是Statement物件(立即執行的的語句)、PreparedStatement語句(預編譯的語句)或CallableStatement物件(儲存過程呼叫的語句)。

5、呼叫excuteQuery()等方法執行SQL語句,並將結果儲存在ResultSet物件;或者呼叫executeUpdate()等方法執行SQL語句,不返回ResultSet物件的結果。

6、對返回的ResultSet物件進行顯示等相當的處理。

7、釋放資源。

二、Java訪問資料庫的具體步驟

1、連線資料庫

(1) 下載Mysql連線驅動

(2) 載入JDBC驅動

操作方法:在Eclipse中,選中相應的工程,點選Project-Properties中的Java Build Path,在Libraries中增加mysql-connector-java-5.1.21-bin.jar,點OK。

(3) 建一個簡單的測試資料庫如下:


2、載入JDBC驅動程式

  1. 在連線資料庫之前,首先要載入想要連線的資料庫的驅動到JVM(Java虛擬機器),這通過java.lang.Class類的靜態方法forName(String  className)實現。 
程式碼如下:
<span style="font-family:Microsoft YaHei;font-size:14px;"> try{   
      //載入MySql的驅動類   
      Class.forName("com.mysql.jdbc.Driver");
      System.out.println("驅動載入成功!");      
 }catch(ClassNotFoundException e){   
      System.out.println("找不到驅動程式類 ,載入驅動失敗!");   
      e.printStackTrace() ;   
 }</span><span style="font-family:Microsoft YaHei;font-size:14px;">
</span>
如果成功載入,那麼Driver的例項就會註冊到DriverManager類中。
3、建立資料庫的連線 1)連線URL定義了連線資料庫時的協議、子協議、資料來源標識。    2)書寫形式:協議:子協議:資料來源標識        協議:在JDBC中總是以jdbc開始         子協議:是橋連線的驅動程式或是資料庫管理系統名稱。         資料來源標識:標記找到資料庫來源的地址與連線埠。
  1.   //連線MySql資料庫,使用者名稱和密碼都是root   
         String url = "jdbc:mysql://localhost:3306/test" ;    
         String username = "root" ;   
         String password = "root" ;   
         try{   
                Connection con = DriverManager.getConnection(url , username , password ) ;   
         }catch(SQLException se){   
                System.out.println("資料庫連線失敗!");   
                se.printStackTrace() ;   
         } 

    4、建立Statement物件
  1. 要執行SQL語句,必須獲得java.sql.Statement例項,Statement例項分為以下3種類型:   
  2. 1)執行靜態SQL語句。通常通過Statement例項實現。   
  3. 2)執行動態SQL語句。通常通過PreparedStatement例項實現。   
  4. 3)執行資料庫儲存過程。通常通過CallableStatement例項實現。 
具體的實現方式如下:
Statement stmt = con.createStatement() ;   
reparedStatement pstmt = con.prepareStatement(sql) ;   
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ; 

5、執行SQL語句
  1.  Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate  和execute  。
  2. 1)ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句   ,返回一個結果集(ResultSet)物件。   
  3. 2)int executeUpdate(String sqlString):用於執行INSERT、UPDATE或  DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等   
  4. 3)execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的語句。   
例如:
//資料庫查詢語句
String sql = "select * from users";//要執行的SQL
				
/*在詢資料表時,需要用到ResultSet介面,它類似於一個數據表,通過該介面的例項可以獲得檢索結果集,以及對應資料表的介面資訊。*/
ResultSet rs = stmt.executeQuery(sql);//建立資料物件

6、處理ResultSet物件
  1. 兩種情況:   
  2. 1)執行更新返回的是本次操作影響到的記錄數。   
  3. 2)執行查詢返回的結果是一個ResultSet物件。   
  4. ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些行中資料的訪問。   
例如執行查詢資料庫表:
//資料庫查詢語句
String sql = "select * from users";//要執行的SQL
				
/*在詢資料表時,需要用到ResultSet介面,它類似於一個數據表,通過該介面的例項可以獲得檢索結果集,以及對應資料表的介面資訊。*/
ResultSet rs = stmt.executeQuery(sql);//建立資料物件
				
System.out.println("編 號"+"\t"+"姓 名"+"\t"+"密 碼"+"\t"+"郵 箱");
//遍歷查詢的結果集
while (rs.next()) {
	System.out.print(rs.getInt(1)+"\t");
	System.out.print(rs.getString(2)+"\t");
	System.out.print(rs.getString(3)+"\t");
	System.out.print(rs.getString(4)+"\t");
	System.out.println();
}

7、關閉JDBC物件,釋放資源
  1. 操作完成以後要把所有使用的JDBC物件全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:   
  2. 1)關閉記錄集   
  3. 2)關閉宣告   
  4. 3)關閉連線物件   
//關閉連線
	rs.close();
        stmt.close();
        conn.close();
最後附上完整的查詢和插入資料程式碼。

1、查詢資料庫

import java.sql.*;

public class SelectTable {
	public static void main(String[] args) {
		try {
			//1.呼叫Class.forName()方法載入驅動程式
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("成功載入MySQL驅動!");
			
			String url= "jdbc:mysql://localhost:3306/test";//JDBC的URL 
			String rootName = "root";
			String pwd ="root";
			
			//2.建立連線
			//呼叫DriverManager物件的getConnection()方法,獲得一個Connection物件
			Connection conn= null;
			//建立Statement物件
			Statement stmt  = null;
			
			try {
				//建立資料庫連線
				conn = DriverManager.getConnection(url,rootName,pwd);
				stmt  = conn.createStatement();//建立一個Statement物件
				System.out.println("成功連線到資料庫~");
				
				//資料庫查詢語句
				String sql = "select * from users";//要執行的SQL
				
				/*在詢資料表時,需要用到ResultSet介面,它類似於一個數據表,通過該介面的例項
				 * 可以獲得檢索結果集,以及對應資料表的介面資訊。*/
				ResultSet rs = stmt.executeQuery(sql);//建立資料物件
				
				System.out.println("編 號"+"\t"+"姓 名"+"\t"+"密 碼"+"\t"+"郵 箱");
				//遍歷查詢的結果集
				while (rs.next()) {
					System.out.print(rs.getInt(1)+"\t");
					System.out.print(rs.getString(2)+"\t");
					System.out.print(rs.getString(3)+"\t");
					System.out.print(rs.getString(4)+"\t");
					System.out.println();
				}
				//關閉連線
				rs.close();
                stmt.close();
                conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	
	}
}
2、插入資料
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 InsertData {
	public static void main(String[] args) {
		try {
			//1.呼叫Class.forName()方法載入驅動程式
			Class.forName("com.mysql.jdbc.Driver");
			System.out.println("成功載入MySQL驅動!");
			
			String url= "jdbc:mysql://localhost:3306/test";//JDBC的URL 
			String rootName = "root";
			String pwd ="root";
			
			//2.建立連線
			//呼叫DriverManager物件的getConnection()方法,獲得一個Connection物件
			Connection conn= null;
			//建立Statement物件
			Statement stmt  = null;
			
			try {
				//建立資料庫連線
				conn = DriverManager.getConnection(url,rootName,pwd);
				stmt  = conn.createStatement();//建立一個Statement物件
				System.out.println("成功連線到資料庫~");
				
				//重新整理的sql語句
				String sql = "insert into users values(2,'ajax','ajax','[email protected]')";
				//建立PreparedStatement物件 
				PreparedStatement pst = conn.prepareStatement(sql);
	            pst.executeUpdate();
	            //System.out.println(pst);
	            	
	            String sql3 = "select * from users";//要執行的SQL
				
				/*在詢資料表時,需要用到ResultSet介面,它類似於一個數據表,通過該介面的例項
				 * 可以獲得檢索結果集,以及對應資料表的介面資訊。*/
				ResultSet rs = stmt.executeQuery(sql3);//建立資料物件
				
				System.out.println("編 號"+"\t"+"姓 名"+"\t"+"密 碼"+"\t"+"郵 箱");
				//遍歷查詢的結果集
				while (rs.next()) {
					System.out.print(rs.getInt(1)+"\t");
					System.out.print(rs.getString(2)+"\t");
					System.out.print(rs.getString(3)+"\t");
					System.out.print(rs.getString(4)+"\t");
					System.out.println();
				}
				
				//關閉連線
				rs.close();
                stmt.close();
                conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	
	}
}