java入門第三步之資料庫連接

來源:互聯網
上載者:User

資料庫連接可以說是學習web最基礎的部分,也是非常重要的一部分,今天我們就來介紹下資料庫的串連為下面學習真正的web打下基礎

java中串連資料庫一般有兩種方式:

1.ODBC——Open Database Connectivity(開放資料庫連接性):基於C語言的一套資料庫編程介面,主要功能是提供資料庫的訪問和操作
所有的資料庫廠商對這套介面進行實現,不同資料庫廠商提供的實現是不一樣的,也就是通常所說的第三方支援,而這套編程介面就是我們的標準

2.JDBC——Java Database Connectivity(java版的ODBC)
專門為java語言提供的一套訪問操作資料庫的編程標準,由sun公司提供,所有可以被java語言操作的資料庫廠商都對其進行了實現

我們一般都是採用JDBC,優勢:

1.效率上jdbc會相對的高一些

2.安全形度來考慮,jdbc比odbc高

3.jdbc使用非常方便,只要加入相應的驅動包就可以了,而不像odbc還需要Jdbc-odbc橋驅動

4.使用jdbc可以很方便在各類資料庫間進行更換,只要更改相應的驅動就可以了

下面列舉用jdbc串連各類資料庫的方式:

常用JDBC串連資料庫方法總結如下:一、JDBC串連DB2Class.forName("Com.ibm.db2.jdbc.net.DB2Driver"); String url="jdbc:db2://dburl:port/DBname" cn = DriverManager.getConnection( url, sUsr, sPwd );二、JDBC串連Microsoft SQLServer(microsoft)Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver" ); cn = DriverManager.getConnection( "jdbc:microsoft:sqlserver://DBServerIP:1433;databaseName=master", sUsr, sPwd ); 三、JDBC串連Sybase(jconn2.jar)Class.forName( "com.sybase.jdbc2.jdbc.SybDriver" ); cn = DriverManager.getConnection( "jdbc:sybase:Tds:DBServerIP:2638", sUsr, sPwd ); 四、JDBC串連MySQL(mm.mysql-3.0.2-bin.jar)Class.forName( "org.gjt.mm.mysql.Driver" ); cn = DriverManager.getConnection( "jdbc:mysql://DBServerIP:3306/myDatabaseName", sUsr, sPwd ); 五、JDBC串連PostgreSQL(pgjdbc2.jar)Class.forName( "org.postgresql.Driver" ); cn = DriverManager.getConnection( "jdbc:postgresql://DBServerIP/myDatabaseName", sUsr, sPwd ); 六、JDBC串連Oracle(classes12.jar)Class.forName( "oracle.jdbc.driver.OracleDriver" ); cn = DriverManager.getConnection( "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd ); 七、JDBC串連ODBC Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); Connection cn = DriverManager.getConnection( "jdbc:odbc:" + sDsn, sUsr, sPwd ); 

下面我以Microsoft SQLServer 2000為例進行資料庫連接的講解,我們在串連前先將jar包放到項目的lib目錄下,這裡我們只需jtds-1.2.5.jar

下面我們先來看一段完整串連資料庫代碼:

import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class JdbcTest {    //資料庫的串連驅動,一般是不需要變的    private static final String DRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";    //資料庫連接的URL,1433為預設的資料庫連接埠號碼,test為當前你要操作的資料庫名    private static final String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";    //登入賬戶    private static final String DBNAME="sa";    //登入的密碼    private static final String DBPASS="123";    public void test(){     Connection con=null;         PreparedStatement psm=null;     ResultSet rs=null;     try{             Class.forName(DRIVER);         con = DriverManager.getConnection(URL,DBNAME,DBPASS);         String sql="select* from admin where id=1";         psm=con.prepareStatement(sql);         rs=psm.executeQuery();         while(rs.next()){            System.out.println(rs.getString("aPassword"));         }     }catch(Exception e){         con.close();         rs.close();         psm.close();         e.printStackTrace();     }finally{            if(rs!=null){              rs.close();            }            if(psm==null){            psm.close();            }            if(con!=null){                  con.close();            }    }  }}

 

對於上面的資料庫連接查詢,我們分6步來進行分析:
a.載入JDBC驅動程式:

在串連資料庫之前,首先要載入想要串連的資料庫的驅動到JVM(Java虛擬機器),這通過java.lang.Class類的靜態方法forName(String  className)實現。  

如上面代碼:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  我們在單獨進行串連時一般要在進行異常的捕獲,即加上try..catch

try{

  Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");   

}catch(ClassNotFoundException e){  

  System.out.println("找不到驅動程式類 ,載入驅動失敗!");  

  e.printStackTrace() ;  

}  

成功載入後,會將Driver類的執行個體註冊到DriverManager類中。

 

b.提供JDBC串連的URL並進行串連 :

如上面的代碼:(也進行異常的捕獲)

private static final String URL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
private static final String DBNAME="sa";
private static final String DBPASS="123";

try{

  con = DriverManager.getConnection(URL,DBNAME,DBPASS);

}catch{
  System.out.println("資料庫連接失敗");

  e.printStackTrace() ;  

}

 

c.建立一個Statement  

  •要執行SQL語句,必須獲得java.sql.Statement執行個體,Statement執行個體分為以下3種類型:  

  1.執行靜態SQL語句。通常通過Statement執行個體實現。  

  2.執行動態SQL語句。通常通過PreparedStatement執行個體實現。  

  3.執行資料庫預存程序。通常通過CallableStatement執行個體實現。  

  具體的實現方式:  

  1.Statement stmt = con.createStatement() ;  

  2.如上代碼:PreparedStatement psm = con.prepareStatement(sql) ;  

  3.CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;  

 

d.執行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):用於執行返回多個結果集、多個更新計數或二者組合的語句。  

  具體實現的代碼:   

  ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;  

  int rows = stmt.executeUpdate("INSERT INTO ...") ;  

  boolean flag = stmt.execute(String sql) ; 

 

 

e.處理結果  

  兩種情況:  

  1.執行更新返回的是本次操作影響到的記錄數。  

  2.執行查詢返回的結果是一個ResultSet對象。  

  • ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些行中資料的訪問。  

  • 使用結果集(ResultSet)對象的存取方法擷取資料:  

  如上例:

    while(rs.next()){
       System.out.println(rs.getString("aPassword"));
      }

  處理結果集還有種方式就是:根據資料庫表列的編號(從左至右,第一列為1)如rs.getString(1)表示擷取對應表中第一列的資料 

 

 

f.關閉JDBC對象   

   操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:  

  1.關閉記錄集  

   if(rs!=null){
       rs.close();
     }

  2.關閉聲明  

  if(psm==null){
     psm.close();
     }

  3.關閉連線物件  

  if(con!=null){
        con.close();
     }

 

串連資料庫基本結束,裡麵包含的有些基礎方面的知識大家自己回去看看書吧,我這裡還提供一個封裝好了的資料庫連接操作,只需要調用即可

http://www.cnblogs.com/shenliang123/archive/2012/04/19/2456665.html

下次我們將進行資料庫操作的實戰

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.