Oracle JDBC 連接范例代碼

  1. 添加Oracle JDBC的驅(qū)動(dòng)
    在我的電腦上,它的位置是: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)建一個(gè)數(shù)據(jù)庫連接
    PreparedStatement pre = null;// 創(chuàng)建預(yù)編譯語句對(duì)象,一般都是用這個(gè)而不用Statement
    ResultSet result = null;// 創(chuàng)建一個(gè)結(jié)果集對(duì)象
    try{
      Class.forName("oracle.jdbc.driver.OracleDriver");// 加載Oracle驅(qū)動(dòng)程序
      System.out.println("開始嘗試連接數(shù)據(jù)庫驯鳖!");
      String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";// 127.0.0.1是本機(jī)地址闲询,XE是精簡版Oracle的默認(rèn)數(shù)據(jù)庫名
      String user = "scott";// 用戶名,系統(tǒng)默認(rèn)的賬戶名
      String password = "tiger";// 你安裝時(shí)選設(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);// 實(shí)例化預(yù)編譯語句
      pre.setInt(1, 40);// 設(shè)置參數(shù),前面的1表示上面預(yù)編譯語句中的?參數(shù)的索引记舆,
      pre.setString(2,"NEW%");
      result = pre.executeQuery();// 執(zhí)行查詢鸽捻,注意括號(hào)中不需要再加參數(shù)
      while (result.next())
        // 當(dāng)結(jié)果集不為空時(shí)
        System.out.println("DNAME:" + result.getInt("DNAME") + "\t DNAME:"
                    + result.getString("DNAME")+"\t LOC:"
                    + result.getString("LOC"));
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try{
            // 逐一將上面的幾個(gè)對(duì)象關(guān)閉,因?yàn)椴魂P(guān)閉的話會(huì)影響性能、并且占用資源
            // 注意關(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);// 實(shí)例化預(yù)編譯語句
      pre.setInt(1, 40);// 設(shè)置參數(shù)府瞄,前面的1表示上面預(yù)編譯語句中的?參數(shù)的索引,
      pre.setString(2,"NEW%");

運(yùn)行結(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等等)逻恐。
  • 對(duì)于填充問號(hào),不要這么寫:select * from dept where ? like 'NEW%'峻黍,.setString(1,"LOC")复隆。否則會(huì)提示java.sql.SQLSyntaxErrorException: ORA-00904: "NEW%": 標(biāo)識(shí)符無效,也就是說它用來填充參數(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. 一個(gè)非常標(biāo)準(zhǔn)的Java連接Oracle數(shù)據(jù)庫的示例代碼
  2. Java中JDBC的PreparedStatement用法
  3. JDBC連接各種數(shù)據(jù)庫的字符串
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宏赘,一起剝皮案震驚了整個(gè)濱河市绒北,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌察署,老刑警劉巖闷游,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贴汪,居然都是意外死亡脐往,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門扳埂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來业簿,“玉大人,你說我怎么就攤上這事聂喇∠皆矗” “怎么了蔚携?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長克饶。 經(jīng)常有香客問我酝蜒,道長,這世上最難降的妖魔是什么矾湃? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任亡脑,我火速辦了婚禮,結(jié)果婚禮上邀跃,老公的妹妹穿的比我還像新娘霉咨。我一直安慰自己,他們只是感情好拍屑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布途戒。 她就那樣靜靜地躺著,像睡著了一般僵驰。 火紅的嫁衣襯著肌膚如雪喷斋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天蒜茴,我揣著相機(jī)與錄音星爪,去河邊找鬼。 笑死粉私,一個(gè)胖子當(dāng)著我的面吹牛顽腾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诺核,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼抄肖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猪瞬?” 一聲冷哼從身側(cè)響起憎瘸,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陈瘦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潮售,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡痊项,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酥诽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞍泉。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肮帐,靈堂內(nèi)的尸體忽然破棺而出咖驮,到底是詐尸還是另有隱情边器,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布托修,位于F島的核電站忘巧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏睦刃。R本人自食惡果不足惜砚嘴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涩拙。 院中可真熱鬧际长,春花似錦、人聲如沸兴泥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搓彻。三九已至如绸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間好唯,已是汗流浹背竭沫。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骑篙,地道東北人蜕提。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像靶端,于是被迫代替她去往敵國和親谎势。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容