您的位置:首頁 > 教學(xué)課堂 > JAVA技術(shù)
來源:長沙北大青鳥大計(jì)校區(qū)|發(fā)布時(shí)間:2015-07-21 14:30:26
數(shù)據(jù)庫訪問幾乎每一個(gè)稍微成型的程序都要用到的知識(shí),怎么高效的訪問數(shù)據(jù)庫也是我們學(xué)習(xí)的一個(gè)重點(diǎn),今天的任務(wù)就是總結(jié)java訪問數(shù)據(jù)庫的方法和有關(guān)API,java訪問數(shù)據(jù)庫主要用的方法是JDBC,它是java語言中用來規(guī)范客戶端程序如何來訪問數(shù)據(jù)庫的應(yīng)用程序接口,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法,下面我們就具體來總結(jié)一下JDBC
一:Java訪問數(shù)據(jù)庫的具體步驟:
1 加載(注冊(cè))數(shù)據(jù)庫
驅(qū)動(dòng)加載就是把各個(gè)數(shù)據(jù)庫提供的訪問數(shù)據(jù)庫的API加載到我們程序進(jìn)來,加載JDBC驅(qū)動(dòng),并將其注冊(cè)到DriverManager中,每一種數(shù)據(jù)庫提供的數(shù)據(jù)庫驅(qū)動(dòng)不一樣,加載驅(qū)動(dòng)時(shí)要把jar包添加到lib文件夾下,下面看一下一些主流數(shù)據(jù)庫的JDBC驅(qū)動(dòng)加裁注冊(cè)的代碼:
//Oracle8/8i/9iO數(shù)據(jù)庫(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
//Sql Server7.0/2000數(shù)據(jù)庫 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//Sql Server2005/2008數(shù)據(jù)庫 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//DB2數(shù)據(jù)庫
Class.froName("com.ibm.db2.jdbc.app.DB2Driver").newInstance();
//MySQL數(shù)據(jù)庫 Class.forName("com.mysql.jdbc.Driver").newInstance();
//PostgreSQL數(shù)據(jù)庫 Class.forName("com.postgresql.jdbc.Driver").newInstance();
2 建立鏈接
建立數(shù)據(jù)庫之間的連接是訪問數(shù)據(jù)庫的必要條件,就像南水北調(diào)調(diào)水一樣,要想調(diào)水首先由把溝通的河流打通。建立連接對(duì)于不同數(shù)據(jù)庫也是不一樣的,下面看一下一些主流數(shù)據(jù)庫建立數(shù)據(jù)庫連接,取得Connection對(duì)象的不同方式:
//Oracle8/8i/9i數(shù)據(jù)庫(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數(shù)據(jù)庫
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
//DB2數(shù)據(jù)庫
String url="jdbc:db2://localhost:5000/sample";
String user="amdin"
String password=-"";
Connection conn=DriverManager.getConnection(url,user,password);
//MySQL數(shù)據(jù)庫
String url="jdbc:mysql://localhost:3306/testDB?user=root&password=root&useUnicode=true&characterEncoding=gb2312";
Connection conn=DriverManager.getConnection(url);
//PostgreSQL數(shù)據(jù)庫
String url="jdbc:postgresql://localhost:5432/postgres";
String user="postgres"
String password="postgres";
Connection conn=DriverManager.getConnection(url,user,password);
3. 執(zhí)行SQL語句
數(shù)據(jù)庫連接建立好之后,接下來就是一些準(zhǔn)備工作和執(zhí)行sql語句了,準(zhǔn)備工作要做的就是建立Statement對(duì)象PreparedStatement對(duì)象,例如:
//建立Statement對(duì)象
Statement stmt=conn.createStatement();
//建立PreparedStatement對(duì)象
String sql="select * from user where userName=? and password=?";
PreparedStatement pstmt=Conn.prepareStatement(sql);
pstmt.setString(1,"admin");
pstmt.setString(2,"liubin");
做好準(zhǔn)備工作之后就可以執(zhí)行sql語句了,執(zhí)行sql語句:
String sql="select * from users";
ResultSet rs=stmt.executeQuery(sql);
//執(zhí)行動(dòng)態(tài)SQL查詢
ResultSet rs=pstmt.executeQuery();
//執(zhí)行insert update delete等語句,先定義sql
stmt.executeUpdate(sql);
4 處理結(jié)果集
訪問結(jié)果記錄集ResultSet對(duì)象。例如:
while(rs.next)
{
out.println("你的第一個(gè)字段內(nèi)容為:"+rs.getString("Name"));
out.println("你的第二個(gè)字段內(nèi)容為:"+rs.getString(2));
}
5 關(guān)閉數(shù)據(jù)庫
依次將ResultSet、Statement、PreparedStatement、Connection對(duì)象關(guān) 閉,釋放所占用的資源.例如:
rs.close();
stmt.clost();
pstmt.close();
con.close();
二:JDBC事務(wù)
什么是事務(wù):
首先,說說什么事務(wù)。我認(rèn)為事務(wù),就是一組操作數(shù)據(jù)庫的動(dòng)作集合。
事務(wù)是現(xiàn)代數(shù)據(jù)庫理論中的核心概念之一。如果一組處理步驟或者全部發(fā)生或者一步也不執(zhí)行,我們稱該組處理步驟為一個(gè)事務(wù)。當(dāng)所有的步驟像一個(gè)操 作一樣被完整地執(zhí)行,我們稱該事務(wù)被提交。由于其中的一部分或多步執(zhí)行失敗,導(dǎo)致沒有步驟被提交,則事務(wù)必須回滾到最初的系統(tǒng)狀態(tài)。
事務(wù)必須服從ISO/IEC所制定的ACID原則。ACID是原子性(atomicity)、一致性(consistency)、隔離性 (isolation)和持久性(durability)的縮寫。事務(wù)的原子性表示事務(wù)執(zhí)行過程中的任何失敗都將導(dǎo)致事務(wù)所做的任何修改失效。一致性表示 當(dāng)事務(wù)執(zhí)行失敗時(shí),所有被該事務(wù)影響的數(shù)據(jù)都應(yīng)該恢復(fù)到事務(wù)執(zhí)行前的狀態(tài)。隔離性表示在事務(wù)執(zhí)行過程中對(duì)數(shù)據(jù)的修改,在事務(wù)提交之前對(duì)其他事務(wù)不可見。持 久性表示當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時(shí),確保已提交事務(wù)的更新不能丟失。持久性通過數(shù)據(jù)庫備份和恢復(fù)來保證。
JDBC 事務(wù)是用 Connection 對(duì)象控制的。JDBC Connection 接口( java.sql.Connection )提供了兩種事務(wù)模式:自動(dòng)提交和手工提交。 java.sql.Connection 提供了以下控制事務(wù)的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事務(wù)界定時(shí),您可以將多個(gè) SQL 語句結(jié)合到一個(gè)事務(wù)中。JDBC 事務(wù)的一個(gè)缺點(diǎn)是事務(wù)的范圍局限于一個(gè)數(shù)據(jù)庫連接。一個(gè) JDBC 事務(wù)不能跨越多個(gè)數(shù)據(jù)庫。
全程面授,不高薪都難
申請(qǐng)成功后,我們將在24小時(shí)內(nèi)與您聯(lián)系
招生熱線: 4008-0731-86 / 0731-82186801
學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號(hào)
Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有
湘ICP備14017520號(hào)-3