国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

java數(shù)據(jù)庫操作

來源:長沙北大青鳥大計校區(qū)|發(fā)布時間:2015-07-21 14:30:26

       數(shù)據(jù)庫訪問幾乎每一個稍微成型的程序都要用到的知識,怎么高效的訪問數(shù)據(jù)庫也是我們學(xué)習(xí)的一個重點,今天的任務(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 加載(注冊)數(shù)據(jù)庫
 驅(qū)動加載就是把各個數(shù)據(jù)庫提供的訪問數(shù)據(jù)庫的API加載到我們程序進(jìn)來,加載JDBC驅(qū)動,并將其注冊到DriverManager中,每一種數(shù)據(jù)庫提供的數(shù)據(jù)庫驅(qū)動不一樣,加載驅(qū)動時要把jar包添加到lib文件夾下,下面看一下一些主流數(shù)據(jù)庫的JDBC驅(qū)動加裁注冊的代碼:
//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)水首先由把溝通的河流打通。建立連接對于不同數(shù)據(jù)庫也是不一樣的,下面看一下一些主流數(shù)據(jù)庫建立數(shù)據(jù)庫連接,取得Connection對象的不同方式:
//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對象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");
做好準(zhǔn)備工作之后就可以執(zhí)行sql語句了,執(zhí)行sql語句:
String sql="select * from users";
ResultSet rs=stmt.executeQuery(sql);
//執(zhí)行動態(tài)SQL查詢
ResultSet rs=pstmt.executeQuery();
//執(zhí)行insert update delete等語句,先定義sql
stmt.executeUpdate(sql);

4 處理結(jié)果集  
 訪問結(jié)果記錄集ResultSet對象。例如:
 while(rs.next)
 {
 out.println("你的第一個字段內(nèi)容為:"+rs.getString("Name"));
 out.println("你的第二個字段內(nèi)容為:"+rs.getString(2));
 }

5 關(guān)閉數(shù)據(jù)庫
依次將ResultSet、Statement、PreparedStatement、Connection對象關(guān)     閉,釋放所占用的資源.例如:
 rs.close();
 stmt.clost();
 pstmt.close();
 con.close();

二:JDBC事務(wù)
什么是事務(wù):
首先,說說什么事務(wù)。我認(rèn)為事務(wù),就是一組操作數(shù)據(jù)庫的動作集合。
事務(wù)是現(xiàn)代數(shù)據(jù)庫理論中的核心概念之一。如果一組處理步驟或者全部發(fā)生或者一步也不執(zhí)行,我們稱該組處理步驟為一個事務(wù)。當(dāng)所有的步驟像一個操 作一樣被完整地執(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í)行失敗時,所有被該事務(wù)影響的數(shù)據(jù)都應(yīng)該恢復(fù)到事務(wù)執(zhí)行前的狀態(tài)。隔離性表示在事務(wù)執(zhí)行過程中對數(shù)據(jù)的修改,在事務(wù)提交之前對其他事務(wù)不可見。持 久性表示當(dāng)系統(tǒng)或介質(zhì)發(fā)生故障時,確保已提交事務(wù)的更新不能丟失。持久性通過數(shù)據(jù)庫備份和恢復(fù)來保證。
JDBC 事務(wù)是用 Connection 對象控制的。JDBC Connection 接口( java.sql.Connection )提供了兩種事務(wù)模式:自動提交和手工提交。 java.sql.Connection 提供了以下控制事務(wù)的方法:
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()
使用 JDBC 事務(wù)界定時,您可以將多個 SQL 語句結(jié)合到一個事務(wù)中。JDBC 事務(wù)的一個缺點是事務(wù)的范圍局限于一個數(shù)據(jù)庫連接。一個 JDBC 事務(wù)不能跨越多個數(shù)據(jù)庫。

上一篇:ASP.NET編程模型之ASP.NET頁面生命周期圖解
下一篇:JAVA規(guī)則引擎 -- Drools

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團(tuán)結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!
定结县| 长葛市| 景宁| 无为县| 简阳市| 宜昌市| 宜宾市| 河间市| 博野县| 福州市| 兰西县| 东乡县| 阿克苏市| 金山区| 东源县| 吉安县| 卫辉市| 额敏县| 临泉县| 泾阳县| 阳江市| 昆山市| 建水县| 和田县| 徐州市| 五华县| 同江市| 金秀| 大埔县| 海丰县| 林州市| 哈密市| 平南县| 汶川县| 大埔县| 湟中县| 涿鹿县| 如东县| 齐河县| 潼关县| 攀枝花市|