Java對MySQL資料庫進行操作【java】
阿新 • • 發佈:2019-01-06
資料庫幾乎是每一個應用型的程式都會用到,學會如何高效操作資料庫也是開發一個重點。今天我總結了具體的操作步驟以及注意點。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驅動程式
- 在連線資料庫之前,首先要載入想要連線的資料庫的驅動到JVM(Java虛擬機器),這通過java.lang.Class類的靜態方法forName(String className)實現。
如果成功載入,那麼Driver的例項就會註冊到DriverManager類中。<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>
3、建立資料庫的連線 1)連線URL定義了連線資料庫時的協議、子協議、資料來源標識。 2)書寫形式:協議:子協議:資料來源標識 協議:在JDBC中總是以jdbc開始 子協議:是橋連線的驅動程式或是資料庫管理系統名稱。 資料來源標識:標記找到資料庫來源的地址與連線埠。
//連線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物件
- 要執行SQL語句,必須獲得java.sql.Statement例項,Statement例項分為以下3種類型:
- 1)執行靜態SQL語句。通常通過Statement例項實現。
- 2)執行動態SQL語句。通常通過PreparedStatement例項實現。
- 3)執行資料庫儲存過程。通常通過CallableStatement例項實現。
Statement stmt = con.createStatement() ;
reparedStatement pstmt = con.prepareStatement(sql) ;
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
5、執行SQL語句
- Statement介面提供了三種執行SQL語句的方法:executeQuery 、executeUpdate 和execute 。
- 1)ResultSet executeQuery(String sqlString):執行查詢資料庫的SQL語句 ,返回一個結果集(ResultSet)物件。
- 2)int executeUpdate(String sqlString):用於執行INSERT、UPDATE或 DELETE語句以及SQL DDL語句,如:CREATE TABLE和DROP TABLE等
- 3)execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的語句。
//資料庫查詢語句
String sql = "select * from users";//要執行的SQL
/*在詢資料表時,需要用到ResultSet介面,它類似於一個數據表,通過該介面的例項可以獲得檢索結果集,以及對應資料表的介面資訊。*/
ResultSet rs = stmt.executeQuery(sql);//建立資料物件
6、處理ResultSet物件
- 兩種情況:
- 1)執行更新返回的是本次操作影響到的記錄數。
- 2)執行查詢返回的結果是一個ResultSet物件。
- 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物件,釋放資源
- 操作完成以後要把所有使用的JDBC物件全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:
- 1)關閉記錄集
- 2)關閉宣告
- 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();
}
}
}