Oracle JDBC 連接范例代碼

  1. 添加Oracle JDBC的驅(qū)動
    在我的電腦上,它的位置是:C:\app\Berlin\oracleDB\product\12.2.0\dbhome_1\jdbc\lib

    在此選擇ojdbc8_g.jar,將其添加到依賴庫中。
  2. 編寫java代碼
public class DBConnection {
  public static void main(String[] args){
    Connection con = null;// 創(chuàng)建一個數(shù)據(jù)庫連接
    PreparedStatement pre = null;// 創(chuàng)建預(yù)編譯語句對象,一般都是用這個而不用Statement
    ResultSet result = null;// 創(chuàng)建一個結(jié)果集對象
    try{
      Class.forName("oracle.jdbc.driver.OracleDriver");// 加載Oracle驅(qū)動程序
      System.out.println("開始嘗試連接數(shù)據(jù)庫!");
      String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";// 127.0.0.1是本機地址,XE是精簡版Oracle的默認(rèn)數(shù)據(jù)庫名
      String user = "scott";// 用戶名,系統(tǒng)默認(rèn)的賬戶名
      String password = "tiger";// 你安裝時選設(shè)置的密碼
      con = DriverManager.getConnection(url, user, password);// 獲取連接
      System.out.println("連接成功!");
      String sql = "select * from dept where deptno<? AND LOC LIKE ?";// 預(yù)編譯語句,“?”代表參數(shù)
      pre = con.prepareStatement(sql);// 實例化預(yù)編譯語句
      pre.setInt(1, 40);// 設(shè)置參數(shù),前面的1表示上面預(yù)編譯語句中的?參數(shù)的索引,
      pre.setString(2,"NEW%");
      result = pre.executeQuery();// 執(zhí)行查詢,注意括號中不需要再加參數(shù)
      while (result.next())
        // 當(dāng)結(jié)果集不為空時
        System.out.println("DNAME:" + result.getInt("DNAME") + "\t DNAME:"
                    + result.getString("DNAME")+"\t LOC:"
                    + result.getString("LOC"));
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try{
            // 逐一將上面的幾個對象關(guān)閉,因為不關(guān)閉的話會影響性能、并且占用資源
            // 注意關(guān)閉的順序,最后使用的最先關(guān)閉
            if (result != null)
                result.close();
            if (pre != null)
                pre.close();
            if (con != null)
                con.close();
            System.out.println("數(shù)據(jù)庫連接已關(guān)閉!");
        }  catch (Exception e){
            e.printStackTrace();
        }
    }
  }
}

DEPT表的內(nèi)容:

SQL> select * from dept;

DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
    10 ACCOUNTING                   NEW YORK
    20 RESEARCH                     DALLAS
    30 SALES                        CHICAGO
    40 OPERATIONS                   BOSTON

而代碼中的語句:

      String sql = "select * from dept where deptno<? AND LOC LIKE ?";// 預(yù)編譯語句,“?”代表參數(shù)
      pre = con.prepareStatement(sql);// 實例化預(yù)編譯語句
      pre.setInt(1, 40);// 設(shè)置參數(shù),前面的1表示上面預(yù)編譯語句中的?參數(shù)的索引,
      pre.setString(2,"NEW%");

運行結(jié)果是:

開始嘗試連接數(shù)據(jù)庫!
連接成功!
DEPTNO:10    DNAME:ACCOUNTING    LOC:NEW YORK
數(shù)據(jù)庫連接已關(guān)閉!

Process finished with exit code 0

3.注意

  • LOC like 'NEW%'不能寫成LOC = 'NEW%',前者是模糊查詢。
  • 應(yīng)當(dāng)使用preparedStatement來查詢(而避免使用Statement)。在其中注意到有?,后面將使用setXxxx方法來填充(如setIntsetString等等)。
  • 對于填充問號,不要這么寫:select * from dept where ? like 'NEW%',.setString(1,"LOC")。否則會提示java.sql.SQLSyntaxErrorException: ORA-00904: "NEW%": 標(biāo)識符無效,也就是說它用來填充參數(shù)等,不要填充關(guān)鍵字等。
  • 連接Oracle數(shù)據(jù)庫,使用String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";語句,其中ORCL是數(shù)據(jù)庫名。若查詢數(shù)據(jù)庫名:
    1. 首先以管理員身份登入:conn sys/password as sysdba
    2. 然后輸入select name from v$database;即可查詢。

參考:

  1. 一個非常標(biāo)準(zhǔn)的Java連接Oracle數(shù)據(jù)庫的示例代碼
  2. Java中JDBC的PreparedStatement用法
  3. JDBC連接各種數(shù)據(jù)庫的字符串
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容