01.JDBC入門,股票入門基礎知識
轉載請標明出處:http://blog.csdn.net/u012637501
一、JDBC入門1.JDBC簡介 JDBC, 即Java Database Connectivity,JDBC 為工具/資料庫開發人員提供了一個標準的 API,使他們能夠用純Java API 來編寫資料庫應用程式。即Java資料庫編程介面,是一組標準的Java語言中的介面和類,使用這些介面和類,Java用戶端程式可以訪問各種不同類型的資料庫,比如建立資料庫連接、執行SQL語句進行資料的存取操作。 JDBC規範採用介面和實現分離的思想設計了Java資料庫編程的架構。介面包含在java.sql及javax.sql包中,其中java.sql屬於JavaSE,javax.sql屬於JavaEE。這些介面的實作類別叫做資料庫驅動程式,由資料庫的廠商或其它的廠商或個人提供。 為了使用戶端程式獨立於特定的資料庫驅動程式,JDBC規範建議開發人員使用基於介面的編程方式,即盡量使應用僅依賴java.sql及javax.sql中的介面和類。
2.JDBC驅動程式 JDBC驅動程式(訪問資料庫編程介面的實作類別),即各個資料庫廠家根據JDBC的規範製作的JDBC實作類別。JDBC類結構:◆DriverManager:是一個實作類別,它是一個工廠類(類的結構設計模式為Factory 方法),用來生產資料庫Driver對象;◆Driver:驅動程式對象的介面,它指向一個實實在在的資料庫驅動程式對象,資料庫物件通過調用DriverManager的getDriver(String URL)獲得驅動程式對象,該方法在各個資料庫廠商按JDBC規範設計的資料庫驅動程式套件裡的類中靜態實現的;◆Connection:通過該介面實現串連到資料庫的對象,通過DriverManager工廠的getConnection(String URL)方法獲得;◆Statement:用於執行靜態SQL語句的介面,通過Connection中的createStatement方法得到的◆Resultset:用於指向結果集對象的介面,結果集對象是通過Statement中的execute等方法得到的
二、Java使用JDBC訪問資料庫的步驟 建立一個以JDBC串連資料庫的程式,包含7個步驟: 1.載入資料庫驅動程式到JVM 在串連資料庫之前,首先要載入想要串連的資料庫的驅動到JVM(Java虛擬機器),這通過java.lang.Class類的靜態方法forName(String className)實現,成功載入後會將Driver類的執行個體註冊到DriverManager類中。例如:
- try{
- //載入MySql的驅動類
- Class.forName("com.mysql.jdbc.Driver") ;
- }catch(ClassNotFoundException e){
- System.out.println("找不到驅動程式類 ,載入驅動失敗!");
- e.printStackTrace() ;
- }
註:com.mysql.jdbc.Driver,即為MySQL資料庫驅動類,位於mysql-connector-java-3.1.11-bin.jar中com.mysql.jdbc包中的Driver.class(類)。
2.提供JDBC串連的URL 串連URL定義了串連資料庫時的協議、子協議、資料來源標識。 書寫形式:協議:子協議:資料來源標識 協議:在JDBC中總是以jdbc開始; 子協議:是橋串連的驅動程式或是資料庫管理系統名稱; 資料來源標識:標記找到資料庫來源的地址與串連連接埠; 例如:(MySql的串連URL) jdbc:mysql: //localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
其中,test為資料庫名稱;useUnicode=true表示使用Unicode字元集,如果characterEncoding設定為gb2312或GBK,本參數必須設定為true;characterEncoding=gbk為字元編碼方式。
3.建立資料庫的串連 要串連資料庫,需要向java.sql.DriverManager請求並獲得Connection對象,該對象就代表一個資料庫的串連。使用DriverManager的getConnectin(String url , String username ,String password )方法傳入指定的欲串連的資料庫的路徑、資料庫的使用者名稱和密碼來獲得。例如:
- //串連MySql資料庫,使用者名稱和密碼都是root
- String url = "jdbc:mysql://localhost:3306/test" ;
- String username = "root" ;
- String password = "root" ;
- try{
- Connection con =
- DriverManager.getConnection(url , username , password ) ;
- }catch(SQLException se){
- System.out.println("資料庫連接失敗!");
- se.printStackTrace() ;
- }
4.建立一個Statement 要執行SQL語句,必須獲得java.sql.Statement執行個體,Statement執行個體分為以下3種類型: (1)執行靜態SQL語句,通常通過Statement執行個體實現; (2)執行動態SQL語句,通常通過PreparedStatement執行個體實現; (3)執行資料庫預存程序,通常通過CallableStatement執行個體實現; 具體的實現方式:
- Statement stmt = con.createStatement() ; //執行靜態SQL語句
- PreparedStatement pstmt = con.prepareStatement(sql) ; //執行動態SQL語句
- CallableStatement cstmt =con.prepareCall("{CALL demoSp(? , ?)}") ; //執行預存程序
5.執行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) ;
6.處理結果 兩種情況:(1)執行更新返回的是本次操作影響到的記錄數。(2)執行查詢返回的結果是一個ResultSet對象。 • ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些行中資料的訪問: • 使用結果集(ResultSet)對象的存取方法擷取資料:
- while(rs.next()){ //返回的結果集為一系列行(記錄)資料
- String name = rs.getString("name") ;
- String pass = rs.getString(1) ; // 此方法比較高效
- } (列是從左至右編號的,並且從列1開始)
7.關閉JDBC對象 操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反: (1)關閉記錄集 (2)關閉聲明 (3)關閉連線物件
- if(rs != null){ // 關閉記錄集
- try{
- rs.close() ;
- }catch(SQLException e){
- e.printStackTrace() ;
- }
- }
- if(stmt != null){ // 關閉聲明
- try{
- stmt.close() ;
- }catch(SQLException e){
- e.printStackTrace() ;
- }
- }
- if(conn != null){ // 關閉連線物件
- try{
- conn.close() ;
- }catch(SQLException e){
- e.printStackTrace() ;
- }
- }
總結1:載入不同資料庫驅動到JMV代碼 (1)Oracle資料庫:Class.forName("oracle.jdbc.driver.OracleDriver"); (2)Sql Server資料庫:Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); (3)MySQL資料庫 :Class.forName("com.mysql.jdbc.Driver"); (4)Access資料庫:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");總結2:建立資料庫連接字串格式 Connection con=DriverManager.getConnection("資料庫JDBC URL", "資料庫使用者名稱","資料庫密碼");
三、常用資料庫的驅動程式及JDBC URL
1.Oracle資料庫(1)驅動程式套件名:ojdbc14.jar (2)驅動類的名字:oracle.jdbc.driver.OracleDriver(3)JDBC URL:jdbc:oracle:thin:@dbip:port:databasename 說明:驅動程式套件名有可能會變 JDBC URL中黑色字型部分必須原封不動的保留,為該驅動識別的URL格式。紅色字型部分需要根據資料庫的安裝情況填寫。其中各個部分含義如下: dbip –為資料庫伺服器的IP地址,如果是本地可寫:localhost或127.0.0.1。 port –為資料庫的監聽連接埠,需要看安裝時的配置,預設為1521。 databasename –為資料庫的SID,通常為全域資料庫的名字。 舉例如果要訪問本地的資料庫allandb,連接埠1521,那麼URL寫法如下: jdbc:oracle:thin:@localhost:1521:allandb :http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
2.SQL Server資料庫 (1)驅動程式套件名:msbase.jar mssqlserver.jar msutil.jar(2)驅動類的名字:com.microsoft.jdbc.sqlserver.SQLServerDriver(3)JDBC URL:jdbc:microsoft:sqlserver://dbip:port;DatabaseName=databasename 說明:驅動程式套件名有可能會變 JDBC URL中黑色字型部分必須原封不動的保留,為該驅動識別的URL格式。紅色字型部需要根據資料庫的安裝情況填寫。其中各個部分含義如下: dbip –為資料庫伺服器的IP地址,如果是本地可寫:localhost或127.0.0.1。 port –為資料庫的監聽連接埠,需要看安裝時的配置,預設為1433。 databasename –資料庫的名字。 舉例如果要訪問本地的資料庫allandb,連接埠1433,那麼URL寫法如下: jdbc: microsoft: sqlserver:@localhost:1433; DatabaseName =allandb:http://www.microsoft.com/downloads/details.aspx
3. MySQL資料庫 (1)驅動程式套件名:mysql-connector-java-3.1.11-bin.jar(2)驅動類的名字:com.mysql.jdbc.Driver(3)JDBC URL:jdbc:mysql://dbip:port/databasename 說明:驅動程式套件名有可能會變 JDBC URL中黑色字型部分必須原封不動的保留,為該驅動識別的URL格式。紅色字型部需要根據資料庫的安裝情況填寫。其中各個部分含義如下: dbip –為資料庫伺服器的IP地址,如果是本地可寫:localhost或127.0.0.1。 port –為資料庫的監聽連接埠,需要看安裝時的配置,預設為3306。 databasename –資料庫的名字。 舉例如果要訪問本地的資料庫allandb,連接埠1433,那麼URL寫法如下: jdbc:mysql://localhost:3306/allandb:http://dev.mysql.com/downloads/connector/j/
4.Access資料庫 (1)驅動程式套件名:該驅動程式套件含在JavaSE中,不需要額外安裝。(2)驅動類的名字:sun.jdbc.odbc.JdbcOdbcDriver(3)JDBC URL:jdbc:odbc:datasourcename 說明:該驅動只能工作在Windows系統中,首先需要在作業系統中建立一個可以訪問Access資料庫的本機資料源(ODBC),如果名字為allandb,那麼URL寫法如下: jdbc:odbc:allandb參考資料http://www.cnblogs.com/lee/archive/2007/08/25/869656.htmlhttp://jingyan.baidu.com/article/5225f26b20b67ae6fa0908ba.htmlhttp://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html