JSP-06-使用JDBC操做數據庫

6.1 使用JDBC查詢數據 【連接oracle數據庫】

 具體操做:java

1)  將odbc文件拷貝到項目中web

  Odbc文件所在目錄: oracle安裝目錄下- product – db_1 – jdbc  -lib – odbc14.jarsql

  複製到項目的 webRoot – webinf  -lib 中數據庫

  在項目中添加引用tomcat

2)  實現數據查詢oracle

      Connection connection=null;eclipse

                   Statement stmt=null;工具

                   ResultSet rs=null;開發工具

                   try {url

                            //(1)Class.forName()加載驅動

                            Class.forName("oracle.jdbc.driver.OracleDriver");

                            //(2)DriverManager.getConnection(URL,用戶名,密碼)得到數據庫鏈接 (Connection)

                            connection=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:news","scott","tiger");

                            //(3)得到Statement對象,執行SQL語句

                            String sql="select * from news_detail";

                            stmt=connection.createStatement();

                            rs=stmt.executeQuery(sql);

                            //(4)處理執行結果(ResultSet)

                            while(rs.next()){

                                     int id=rs.getInt("id");

                                     String title=rs.getString("title");                                

                                     Timestamp time=rs.getTimestamp("createdate");

                                     //輸出

                            }

                   } catch (ClassNotFoundException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                   } catch (SQLException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                   }finally{

                            //釋放資源

                            try {

                                     rs.close();

                                     stmt.close();

                                     connection.close();

                            } catch (SQLException e) {

                                     // TODO Auto-generated catch block

                                     e.printStackTrace();

                            }

                   }

 

 

6.2 使用JDBC操做數據 【連接oracle數據庫】

         String sql="insert into news_detail(id,categoryId,createdate) values(?,?,?)";

         pstmt=connection.prepareStatement(sql);

         pstmt.setInt(1, id);

         pstmt.setInt(2, categoryId);                     

         pstmt.setTimestamp(6, new java.sql.Timestamp(createdate.getTime()));

         int i=pstmt.executeUpdate();

         //(4)處理執行結果

         if(i>0)                                   

System.out.println("插入成功!");       

 

        

6.3 升級JDBC (基於屬性文件的數據庫配置)

目的: 更改數據庫時,便於修改,靈活。

屬性文件: 把相關數據庫配置信息寫在文件中,並保持在項目內,在程序中讀取文件中的信息,從而進行數據庫鏈接。在Java中提供了 Properties 類,來讀取 .properties(屬性)文件。在項目中默認路徑(src)下建立文件,名稱爲 db.properties (名稱可自定義,擴展名必須爲 properties), 編輯文件內容

 1) src – 新建 – other - *.properties   (以.properties結尾,保存數據鏈接信息)

    jdbc.driver_class=oracle.jdbc.driver.OracleDriver 

    jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:news   //路徑

    jdbc.connection.username=scott   //用戶名

    jdbc.connection.password=tiger   //密碼

  

2) 使用參數鏈接DB (讀取配置文件)

     詳見  編寫通用DAO中 util 目錄下的 ConfigManager.java

 

3) 讀取屬性文件

package com.pb.news.util;

 

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

 

//讀取配置文件(屬性文件)的工具類

public class ConfigManager {

     

      private static ConfigManager configManager;

      //properties.load(InputStream);讀取屬性文件

     

      private static Properties properties;

     

      private ConfigManager(){

               String configFile="database.properties";

               properties=new Properties();

               InputStream in=ConfigManager.class.getClassLoader().getResourceAsStream(configFile);

               try {

                         properties.load(in);

                         in.close();

               } catch (IOException e) {

                         // TODO Auto-generated catch block

                         e.printStackTrace();

               }

      }

     

      //以單例模式建立、得到對象實例

      public static ConfigManager getInstance(){

               if(configManager != null){

                                           return configManager;

                         }else{

                                           makeInstance();

                                           return configManager;

                         }

      }

     

      //同步方法,保證在同一時間,只能被一我的調用

      private static synchronized void makeInstance(){

                         if(configManager==null){

                                  configManager=new ConfigManager();

                         }

      }

              

      public String getString(String key){

               return properties.getProperty(key);

      }

}

 

4) 實現數據查詢

爲了不數據冗餘,先編寫接口,而後編寫實現接口,繼承 BaseDao.java 的類。

 

6.4    數據庫鏈接池 【看此段內容請忽略6.3】

數據庫鏈接池負責分配、管理和釋放數據庫鏈接,它容許應用程序重複使用一個現有的數據庫鏈接,而再也不是從新創建一個;釋放空閒時間超過最大空閒時間的數據庫鏈接,以免由於沒有釋放數據庫鏈接而引發的數據庫鏈接遺漏。

一、Tomcat中加入數據庫驅動文件

    將數據庫中的odbc14.jar 文件拷貝到 tomcat 的安裝目錄的lib 文件中

二、配置Tomcat的conf/context.xml   (Tomcat的安裝目錄)

         <Resource name="jdbc/news"

              auth="Container"  type="javax.sql.DataSource"  maxActive="100"

              maxIdle="30" maxWait="10000" username="scott"  password="tiger"

              driverClassName="oracle.jdbc.OracleDriver"

              url="jdbc:oracle:thin:@localhost:1521:news"/>

 

  (! 項目編寫過程當中,有個Server文件夾,裏面是項目運行過程當中從真實Tomcat中拷貝過來的,因此此處還須要將這段文件拷貝到Server目錄中的 conf/context.xml中。此問題和開發工具備關,這是javaee eclipse的一個bug)

三、配置應用程序的(WEB-INF文件夾中)web.xml文件

(可選,若是JDBC1.6以上此步可略過)

         <resource-ref>

                   <res-ref-name>jdbc/news</res-ref-name>

                   <res-type>javax.sql.DataSource</res-type>

                   <res-auth>Container</res-auth>

         </resource-ref>

四、使用JNDI(JAVA的命名和目錄接口)獲取鏈接對象

           public Connection getConnection2() {

                            try {

                                     //初始化上下文

                                     Context cxt=new InitialContext();

                                     //獲取與邏輯名相關聯的數據源對象

                                     DataSource ds=(DataSource)cxt.lookup("java:comp/env/jdbc/news");

                                     conn=ds.getConnection();

                            } catch (NamingException e) {

                                     // TODO Auto-generated catch block

                                     e.printStackTrace();

                            } catch (SQLException e) {

                                     // TODO Auto-generated catch block

                                     e.printStackTrace();

                            }

                            return conn;

                   }

相關文章
相關標籤/搜索