<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 負人博客 閱讀(1252) 評論(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();


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


    網站導航:
     

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

    Copyright © 負人博客

    主站蜘蛛池模板: 三年在线观看免费观看完整版中文 | 成人在线免费观看| 日韩成全视频观看免费观看高清| 国产aa免费视频| 亚洲AV福利天堂一区二区三| 99视频在线观看免费| 亚洲国产三级在线观看| 中文精品人人永久免费| 久久精品亚洲综合| 日韩午夜理论免费TV影院| 亚洲成人福利在线观看| 在线a级毛片免费视频| 久久亚洲中文字幕精品一区| 亚洲福利一区二区精品秒拍| 免费大片黄在线观看yw| 亚洲综合色自拍一区| 精品国产日韩亚洲一区91| 久草免费在线观看视频| 久久亚洲最大成人网4438| 日韩视频免费一区二区三区| 美女被免费网站在线视频免费| 日本免费一区二区三区| 亚洲一区在线观看视频| 亚洲av无码成人精品区| a级片免费在线观看| 亚洲无限乱码一二三四区| 高清国语自产拍免费视频国产 | 成人永久福利免费观看| 全黄A免费一级毛片| 午夜高清免费在线观看| 一级毛片人与动免费观看| 日本特黄a级高清免费大片| 亚洲国产成人精品电影| 高清国语自产拍免费视频国产| 国产亚洲sss在线播放| 免费va在线观看| 免费无码成人AV在线播放不卡| 亚洲午夜久久久久妓女影院| 67194国产精品免费观看| 校园亚洲春色另类小说合集| 久久精品国产亚洲AV麻豆王友容 |