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

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

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

    dorado技術園地

    與您共同討論dorado技術及其應用技巧

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      8 隨筆 :: 0 文章 :: 37 評論 :: 1 Trackbacks

    Dorado提供默認的提交操作中,用戶可能會有其他自定義的數(shù)據(jù)更新操作,如何使他們都處于一個事務中呢?

    方法一: 使用標準的JDBC對象完成數(shù)據(jù)操作.

    Dorado提供了一個工具類,com.bstek.dorado.common.TransactionManager,該類提供一個靜態(tài)方法:

    Transaction getTransaction(DoradoContext context) throws java.lang.Exception

    獲取與指定的上下文(DoradoContext)相關的事務對象.

    這樣我們得到一個默認的處理事務對象,通過該事務對象提供的方法:

    Connection getConnection(java.lang.String dataSource) throws java.lang.Exception

    獲取一個與本事務相關的Connection,自定義的更新就通過這個Connection對象處理,最后系統(tǒng)會自動管理整個事務。

    代碼示例: 

    Transaction transaction = TransactionManager.getTransaction(context);
    Connection connection 
    = transaction.getConnection(null);
    try {
        
    // 利用connection對象進行數(shù)據(jù)操作.
    }

    finally {
        connection.close();
    }

    注意

    Connection 對象,你可以執(zhí)行close操作,但是不允許執(zhí)行commitrollback操作。因為commitrollback操作將在系統(tǒng)所有更新完成之后才允許進行, commitrollback操作是由Transaction對象管理的。

    即使您在Transaction執(zhí)行commit之前對Connection執(zhí)行了close操作也不會影響到你在該Connection上所作得數(shù)據(jù)修改. 您不必擔心由于提前關閉了Connection而導致所作的數(shù)據(jù)修改脫離了事務.

    方法二: 使用標準的doradoDatasetDBStatement對象完成數(shù)據(jù)操作.

    除了使用上面的方法之外, 我們還可以使用dorado中提供的DatasetDBStatement對象完成數(shù)據(jù)操作. 這種做法優(yōu)點在于:

    1.       可直接集成Context中的當前事務, 代碼量小.

    2.       支持命名參數(shù), 使用方便.

    使用SqlDataset添加記錄的代碼示例:

    AutoSqlDataset dataset = new AutoSqlDataset();
    dataset.setOriginTable(
    "employee"); //設置要操作的數(shù)據(jù)庫表名
    dataset.setKeyFields("employee_id"); //設置該表的主鍵(在更新或刪除記錄時必須設置)    

    dataset.insertRecord(); 
    //插入一條空記錄
    // 以下代碼設置新記錄的值
    dataset.setString("employee_id""GUOLIWEI");
    dataset.setString(
    "employee_name""國蒞偉");
    dataset.setBoolean(
    "sex"false);    

    dataset.insertRecord(); 
    //插入另一條空記錄
    // 以下代碼設置新記錄的值
    dataset.setString("employee_id""PANLONG");
    dataset.setString(
    "employee_name""盤龍");
    dataset.setBoolean(
    "sex"true);

    dataset.update(context); 
    //將所做的修改更新到數(shù)據(jù)庫中


    使用DBStatement對象的代碼示例:

    DBStatement statement = new DBStatement(
        
    null"INSERT INTO LOG (MSG_TIME, MSG) VALUES (:timestamp, :message)");
    ParameterSet parameters 
    = statement.parameters();    

    //添加一條記錄
    parameters.setDate("timestamp"new Date());
    parameters.setString(
    "message""XXX XXX XXX");
    statement.execute(context);

    //添加另一條記錄
    parameters.setDate("timestamp"new Date());
    parameters.setString(
    "message""YYY YYY YYY");
    statement.execute(context);
    posted on 2005-07-25 00:46 dorado技術園地 閱讀(4244) 評論(0)  編輯  收藏

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 国产精品区免费视频| 好吊妞998视频免费观看在线| 亚洲熟妇av一区二区三区下载| 男女免费观看在线爽爽爽视频| 亚洲小说图区综合在线| 亚洲?V无码成人精品区日韩| 波多野结衣免费一区视频| 精品亚洲AV无码一区二区三区| 国产中文字幕免费观看| 久久99精品国产免费观看| 77777亚洲午夜久久多喷| 久久精品国产亚洲精品| jjizz全部免费看片| 一级中文字幕乱码免费| 亚洲国产成人精品电影| 国产亚洲精品无码专区| 人妻视频一区二区三区免费| 国产精品无码永久免费888| 亚洲AV综合色区无码二区偷拍 | 99视频精品全部免费观看| 亚洲av日韩av永久在线观看| 亚洲精品在线观看视频| 亚洲AⅤ视频一区二区三区| 亚洲人成网站免费播放| 久操视频免费观看| 免费一级做a爰片久久毛片潮| 亚洲成A∨人片在线观看无码| 亚洲一区无码精品色| 天天摸天天操免费播放小视频| 久久九九全国免费| 成年在线观看网站免费| 一本岛v免费不卡一二三区| 国产亚洲精品bv在线观看| 亚洲人成在线播放网站岛国| 久久久久一级精品亚洲国产成人综合AV区 | 亚洲av日韩av欧v在线天堂| 免费看国产成年无码AV片| 久久精品国产这里是免费| 国产成人无码精品久久久免费| 亚洲s码欧洲m码吹潮| 亚洲H在线播放在线观看H|