標籤:
資料庫訪問幾乎每一個稍微成型的程式都要用到的知識,怎麼高效的訪問資料庫也是我們學習的一個重點,今天的任務就是總結java訪問資料庫的方法和有關API,java訪問資料庫主要用的方法是JDBC,它是java語言中用來規範用戶端程式如何來訪問資料庫的應用程式介面,提供了諸如查詢和更新資料庫中資料的方法,下面我們就具體來總結一下JDBC
一:Java訪問資料庫的具體步驟:
1 載入(註冊)資料庫
驅動載入就是把各個資料庫提供的訪問資料庫的API載入到我們程式進來,載入JDBC驅動,並將其註冊到DriverManager中,每一種資料庫提供的資料庫驅動不一樣,載入驅動時要把jar包添加到lib檔案夾下,下面看一下一些主流資料庫的JDBC驅動加裁註冊的代碼:
//Oracle8/8i/9iO資料庫(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
//Sql Server7.0/2000資料庫 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//Sql Server2005/2008資料庫 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//DB2資料庫
Class.froName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
//MySQL資料庫 Class.forName("com.mysql.jdbc.Driver").newInstance();
//PostgreSQL資料庫 Class.forName("com.postgresql.jdbc.Driver").newInstance();
2 建立連結
建立資料庫之間的串連是訪問資料庫的必要條件,就像南水北調調水一樣,要想調水首先由把溝通的河流打通。建立串連對於不同資料庫也是不一樣的,下面看一下一些主流資料庫建立資料庫連接,取得Connection對象的不同方式:
//Oracle8/8i/9i資料庫(thin模式)
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String user="scott";
String password="tiger";
Connection conn=DriverManager.getConnection(url,user,password);
//Sql Server7.0/2000/2005/2008資料庫
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
//DB2資料庫
String url="jdbc:db2://localhost:5000/sample";
String user="amdin"
String password=-"";
Connection conn=DriverManager.getConnection(url,user,password);
//MySQL資料庫
String url="jdbc:mysql://localhost:3306/testDB?user=root&password=root&useUnicode=true&characterEncoding=gb2312";
Connection conn=DriverManager.getConnection(url);
//PostgreSQL資料庫
String url="jdbc:postgresql://localhost:5432/postgres";
String user="postgres"
String password="postgres";
Connection conn=DriverManager.getConnection(url,user,password);
3. 執行SQL語句
資料庫連接建立好之後,接下來就是一些準備工作和執行sql語句了,準備工作要做的就是建立Statement對象PreparedStatement對象,例如:
//建立Statement對象
Statement stmt=conn.createStatement();
//建立PreparedStatement對象
String sql="select * from user where userName=? and password=?";
PreparedStatement pstmt=Conn.prepareStatement(sql);
pstmt.setString(1,"admin");
pstmt.setString(2,"liubin");
做好準備工作之後就可以執行sql語句了,執行sql語句:
String sql="select * from users";
ResultSet rs=stmt.executeQuery(sql);
//執行動態SQL查詢
ResultSet rs=pstmt.executeQuery();
//執行insert update delete等語句,先定義sql
stmt.executeUpdate(sql);
4 處理結果集
訪問結果記錄集ResultSet對象。例如:
while(rs.next)
{
out.println("你的第一個欄位內容為:"+rs.getString("Name"));
out.println("你的第二個欄位內容為:"+rs.getString(2));
}
5 關閉資料庫
依次將ResultSet、Statement、PreparedStatement、Connection對象關 閉,釋放所佔用的資源.例如:
rs.close();
stmt.clost();
pstmt.close();
con.close();
二:JDBC事務
什麼是事務:
首先,說說什麼事務。我認為事務,就是一組操作資料庫的動作集合。
事務是現代資料庫理論中的核心概念之一。如果一組處理步驟或者全部發生或者一步也不執行,我們稱該組處理步驟為一個事務。當所有的步驟像一個操 作一樣被完整地執行,我們稱該事務被提交。由於其中的一部分或多步執行失敗,導致沒有步驟被提交,則事務必須復原到最初的系統狀態。
事務必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性 (isolation)和持久性(durability)的縮寫。事務的原子性表示事務執行過程中的任何失敗都將導致事務所做的任何修改失效。一致性表示 當事務執行失敗時,所有被該事務影響的資料都應該恢複到事務執行前的狀態。隔離性表示在事務執行過程中對資料的修改,在事務提交之前對其他事務不可見。持 久性表示當系統或介質發生故障時,確保已提交事務的更新不能丟失。持久性通過Database Backup和恢複來保證。
JDBC 事務是用 Connection 對象控制的。JDBC Connection 介面( java.sql.Connection )提供了兩種事務模式:自動認可和手工提交。 java.sql.Connection 提供了以下控制事務的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事務界定時,您可以將多個 SQL 語句結合到一個事務中。JDBC 事務的一個缺點是事務的範圍局限於一個資料庫連接。一個 JDBC 事務不能跨越多個資料庫。
【轉載】java資料庫操作