JDBC是一種用于執(zhí)行SQL的Java API,它本身是個(gè)商標(biāo)名,但很多人把它認(rèn)為是Java Database Connectivity(Java 數(shù)據(jù)庫連接)的縮寫。
              JDBC是一組訪問數(shù)據(jù)庫的API集合,通過加載由數(shù)據(jù)庫廠商所提供的驅(qū)動(dòng)程序,可以與數(shù)據(jù)庫建立連接。這樣,就不必為訪問不同的數(shù)據(jù)庫而寫不同的程序了,只需用一個(gè)JDBC API寫一個(gè)程序就夠了。而且是,JDBC技術(shù)對(duì)開發(fā)者屏蔽了一些細(xì)節(jié)問題,這樣,程序員就不必去關(guān)心底層的實(shí)現(xiàn)技術(shù)了。另外,跟java一樣,JDBC 對(duì)數(shù)據(jù)庫的訪問也具有平臺(tái)無關(guān)性。
              JDBC訪問數(shù)據(jù)庫的步驟:

              1.注冊(cè)并加載驅(qū)動(dòng)程序:
                  驅(qū)動(dòng)程序是數(shù)據(jù)廠商所提供的一個(gè)對(duì)外的接口來分辨所訪問的是哪一種數(shù)據(jù)庫.
                  我們可以調(diào)用Class.forName()顯示地加載驅(qū)動(dòng)程序.方法如下(以MySql為例):
                     Class.forName("org.gjt.mm.mysql.Driver");
                     Class.forName()是一個(gè)靜態(tài)方法,用于指示Java虛擬機(jī)動(dòng)態(tài)的查找,加載和鏈接指定類(如果尚未加載).如果無法找到這個(gè)類,則拋出ClassNotFountException.

              2.創(chuàng)建連接:
                   數(shù)據(jù)庫連接是使用DriverManager對(duì)象的靜態(tài)方法getConnection()建立的,方法如下:
                       String url = "jdbc:mysql://127.0.0.1:3306/qq"; //127.0.0.1為連接地址,qq為數(shù)據(jù)庫名
                       Connection conn = DriverManager.getConnection(url, "root", "root");
                       // "root", "root"為用戶名和密碼

              3.創(chuàng)建SQL語句對(duì)象:
                    SQL語句對(duì)象主要是用來執(zhí)行SQL語句的,當(dāng)建立了連接以后,便可以由Statement對(duì)象將SQL語句發(fā)送到DBMS.對(duì)SELECT語句,可使用executeQuery();對(duì)于創(chuàng)建或修改表的語句,使用executeUpdate();方法如下:
                        Statement st = conn.createStatement();

              4.提交SQL語句:
                     得到創(chuàng)建SQL語句對(duì)象后,我們就可以提交SQL語句了,方法如下:
                         a.查詢數(shù)據(jù):
                         ResultSet rs = st.executeQuery("select * from login"); //返回查詢SQL語句所得到的ResultSet對(duì)象格式的結(jié)果集.
                         b.添加數(shù)據(jù):
                         int i = st.executeUpdate( "insert into login values('zhang','123')");  //這個(gè)方法返回值是一個(gè)整數(shù),代表的是影響數(shù)據(jù)的行數(shù).
                         我們也可以用Statement的子接口PreparedStatement來實(shí)現(xiàn)提交,而PreparedStatement的子接口CallableStatement則用于執(zhí)行SQL存儲(chǔ)過程.

               5.顯示結(jié)果:
                       當(dāng)執(zhí)行查詢語句時(shí),SQL語句的執(zhí)行結(jié)果存儲(chǔ)在ResultSet對(duì)象中.我們可以使用Getxxx方法來檢索數(shù)據(jù).方法如下:
                          while(rs.next()){
                              String name = set.getString("name");
                              String password = set.getString("password");
                          } 
                        如果發(fā)送的SQL語句不是查詢語句,則這一步將省略.

                6.關(guān)閉連接:
                       當(dāng)完成數(shù)據(jù)庫操作后,需要將連接關(guān)閉.因?yàn)閿?shù)據(jù)庫連接需要消耗系統(tǒng)資源.一旦不需要使用的時(shí)候,就應(yīng)該釋放出來.這是程序員必須養(yǎng)成的良好的習(xí)慣.在關(guān)閉連接時(shí),正確的順序是:Result,Statement,Connection.語法如下:
                          rs.close();
                          st.cloe();
                          conn.close();
                 為確保所有的連接能夠被關(guān)閉,應(yīng)該把關(guān)閉語句寫在finally塊中,這樣,不管操作數(shù)據(jù)庫過程中是否發(fā)生異常,都能夠?qū)①Y源釋放出來.

                連接其它的數(shù)據(jù)庫步驟均相同,只需更改驅(qū)動(dòng)程序即可.
                         
                   


          主站蜘蛛池模板: 福建省| 黄浦区| 二连浩特市| 南木林县| 晴隆县| 灵璧县| 屏东市| 九龙县| 叶城县| 东至县| 平谷区| 海口市| 台州市| 长沙县| 金沙县| 乌兰县| 托里县| 保德县| 蚌埠市| 垦利县| 桑植县| 大埔县| 衡南县| 莒南县| 大丰市| 宁波市| 余江县| 抚顺市| 运城市| 凤庆县| 河南省| 望城县| 乌海市| 玛曲县| 永丰县| 嘉义县| 长春市| 喜德县| 邯郸市| 开化县| 当涂县|