<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java直連數據庫小結

    Posted on 2006-07-06 18:15 負人博客 閱讀(1255) 評論(0)  編輯  收藏 所屬分類: JAVA技術

    一:取得數據庫連接
    ?? 1.用DriverManager取數據庫連接
    ?? ?例子
    ??? ??String className,url,uid,pwd;
    ??? ??className = "oracle.jdbc.driver.OracleDriver";
    ?? ? ?url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
    ??? ??uid = "system";
    ??? ??pwd = "manager";
    ???? ?Class.forName(className);
    ??Connection cn = DriverManager.getConnection(url,uid,pwd);
    ?? 2.通過JNDI取得數據庫連接
    ?用jndi(java的命名和目錄服務)方式
    ? ?例子
    ??? ??String jndi = "jdbc/db";
    ??? ??Context ctx = (Context) new InitialContext().lookup("java:comp/env");
    ??? ??DataSource ds = (DataSource) ctx.lookup(jndi);
    ??? ??Connection cn = ds.getConnection();
    二:執行sql語句
    ?1.用Statement來執行sql語句
    ?? ??String sql;
    ?? ??Statement sm = cn.createStatement();
    ?? ??sm.executeQuery(sql); // 執行數據查詢語句(select)
    ?? ??sm.executeUpdate(sql); // 執行數據更新語句(delete、update、insert、drop等)statement.close();
    ? ?2.用PreparedStatement來執行sql語句
    ?? ??String sql;
    ?? ??sql? = "insert into user (id,name) values (?,?)";
    ?? ??PreparedStatement ps = cn.prepareStatement(sql);
    ?? ??ps.setInt(1,xxx);
    ?? ??ps.setString(2,xxx);
    ? ??...
    ?? ??ResultSet rs = ps.executeQuery(); // 查詢
    ?? ??int c = ps.executeUpdate(); // 更新
    三:處理執行結果
    ? ?查詢語句,返回記錄集ResultSet
    ? ?更新語句,返回數字,表示該更新影響的記錄數
    ? ?ResultSet的方法
    ? ??1、next(),將游標往后移動一行,如果成功返回true;否則返回false
    ? ??2、getInt("id")或getSting("name"),返回當前游標下某個字段的值
    四:釋放連接
    ? cn.close();
    ? 一般,先關閉ResultSet,然后關閉Statement(或者PreparedStatement);最后關閉Connection


    可滾動、更新的記錄集
    ?1、創建可滾動、更新的Statement
    ? Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);
    ? 該Statement取得的ResultSet就是可滾動的
    ?2、創建PreparedStatement時指定參數
    ? PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

    ? ResultSet.absolute(9000);?
    批量更新
    ?1、Statement
    ? Statement sm = cn.createStatement();
    ? sm.addBatch(sql1);
    ? sm.addBatch(sql2);
    ? ...
    ? sm.executeBatch()
    ? 一個Statement對象,可以執行多個sql語句以后,批量更新。這多個語句可以是delete、update、insert等或兼有
    ?2、PreparedStatement
    ? PreparedStatement ps = cn.preparedStatement(sql);
    ? {
    ?? ps.setXXX(1,xxx);
    ?? ...
    ?? ps.addBatch();
    ? }
    ? ps.executeBatch();
    ? 一個PreparedStatement,可以把一個sql語句,變換參數多次執行,一次更新。

    ?
    事務的處理
    ?1、關閉Connection的自動提交
    ? cn.setAutoCommit(false);
    ?2、執行一系列sql語句
    ? 要點:執行每一個新的sql語句前,上一次執行sql語句的Statement(或者PreparedStatemet)必須先close
    ?Statement sm ;
    ?sm = cn.createStatement(insert into user...);
    ?sm.executeUpdate();
    ?sm.close();

    ?sm = cn.createStatement("insert into corp...);
    ?sm.executeUpdate();
    ?sm.close();

    ?3、提交
    ? cn.commit();
    ?4、如果發生異常,那么回滾
    ? cn.rollback();


    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    posts - 26, comments - 5, trackbacks - 0, articles - 8

    Copyright © 負人博客

    主站蜘蛛池模板: 久久亚洲国产精品| 亚洲一区二区三区免费| 久久久无码精品亚洲日韩蜜臀浪潮| 青青草国产免费国产是公开| 免费看男女下面日出水视频| 日韩国产精品亚洲а∨天堂免| 大学生a级毛片免费观看| 亚洲中文无码mv| 色妞WWW精品免费视频| 亚洲人成图片网站| 成人毛片免费视频| 国产精品久久久久久亚洲影视| 国产美女精品视频免费观看| 偷自拍亚洲视频在线观看99| 亚洲国产成人爱av在线播放| 久久国产精品免费一区| 国产亚洲精品成人AA片新蒲金| 国产免费阿v精品视频网址| 亚洲AV无码一区二区三区系列| 日韩午夜理论免费TV影院| 91午夜精品亚洲一区二区三区| 大地资源在线观看免费高清| 噜噜综合亚洲AV中文无码| 亚洲一区精品伊人久久伊人| 国产午夜无码精品免费看| 亚洲国产美女精品久久久久| 日韩黄色免费观看| 三上悠亚在线观看免费| 亚洲国产成人九九综合| 国内自产少妇自拍区免费| 一级午夜a毛片免费视频| 久久久久久亚洲精品中文字幕 | 国产视频精品免费视频| 国产精品亚洲A∨天堂不卡| 蜜臀AV免费一区二区三区| 亚洲AV日韩AV永久无码色欲| 国产av无码专区亚洲国产精品| 免费无码又爽又刺激高潮视频| 亚洲视频在线观看2018| 国产亚洲av片在线观看18女人| 国产婷婷成人久久Av免费高清|