<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 © 負人博客

    主站蜘蛛池模板: 亚洲成在人线av| 亚洲色图视频在线观看| 中文字幕在亚洲第一在线| 亚洲国产精品lv| 精品视频免费在线| av永久免费网站在线观看 | mm1313亚洲国产精品无码试看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 亚洲日韩一区二区三区| 国产在线精品一区免费香蕉| 大香人蕉免费视频75| 1区1区3区4区产品亚洲| 最近免费中文字幕高清大全 | 在线观看免费精品国产| 亚洲天堂一区二区三区| a级在线免费观看| 久久精品蜜芽亚洲国产AV| 永久免费不卡在线观看黄网站| 亚洲av色影在线| 成人av片无码免费天天看| 亚洲成A人片在线观看WWW| 久久久久久国产精品免费无码| 亚洲国产精品综合久久网各| 好爽又高潮了毛片免费下载| 污污免费在线观看| 成人亚洲综合天堂| 美女黄网站人色视频免费| 最好免费观看韩国+日本| 亚洲一区在线免费观看| 最近最新高清免费中文字幕 | 亚洲国产成人久久一区WWW| 亚洲国产精华液2020| 午夜私人影院免费体验区| 白白色免费在线视频| 亚洲第一区香蕉_国产a| 成人免费视频软件网站| 亚洲国产高清国产拍精品| 国产亚洲一区二区三区在线观看| 91在线免费观看| 亚洲日韩久久综合中文字幕| 亚洲男同帅GAY片在线观看|