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

    主站蜘蛛池模板: 国产精品无码亚洲精品2021| 亚洲乱码一二三四区乱码| 国产亚洲视频在线播放大全| 久久精品a一国产成人免费网站 | 中字幕视频在线永久在线观看免费| 亚洲国产精品久久| 免费观看美女用震蛋喷水的视频 | 美女视频黄频a免费观看| 亚洲成a人片在线观看日本麻豆| 天堂亚洲免费视频| 亚洲欧洲精品无码AV| 久99久精品免费视频热77| 亚洲毛片免费视频| 一二三四影视在线看片免费 | 免费人成视频在线观看不卡| 九九九国产精品成人免费视频| 一本色道久久综合亚洲精品| 日本免费在线观看| 亚洲人成无码网站在线观看| 国产一级淫片免费播放| 三级黄色片免费看| 亚洲成人免费在线观看| 国产成人在线观看免费网站 | 一级黄色免费毛片| 亚洲av无码国产精品色午夜字幕 | 91精品成人免费国产片| 亚洲成在人线在线播放无码| 亚洲人成网站在线观看青青| 日本在线看片免费人成视频1000 | 国产99视频免费精品是看6| 国产成人无码免费网站| 亚洲图片激情小说| 亚洲av午夜精品一区二区三区| 无码人妻一区二区三区免费看 | 亚洲激情在线观看| 日韩精品视频免费在线观看| 2022免费国产精品福利在线| 亚洲国产成人资源在线软件 | 免费下载成人电影| 特级做A爰片毛片免费看无码 | 日本视频免费在线|