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

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

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

    隨筆-39  評論-33  文章-0  trackbacks-0
     

    從運用角度來理解newxyDAOupdate方法

    胡立新

    關于newxyDAOupdate是更新還是插入,文檔中有說明。在此談運用中的一些情況:

        1jsp面表上有表單<nhtml:form ...>...</nhtml:form><html:form ...>...</html:form>,但之前沒有經查詢或其它方法得到formBean。這時標簽會實例化一個formBean。由于沒有數據,用戶看到的是空白頁,填入數據后,update作插入操作,這是因為主關鍵字值為空,除非用戶顯式地賦給主關鍵字值存在于表中。

        2、用戶點擊了“新建”銨鈕,<logic:action1/>會將formBeanHashMap類型的values清空(除保留屬性),表單值均來源于此values,隨后表單顯示的也是空白頁。update后作插入操作,除非用戶顯式地賦給主關鍵字值存在于表中。

        3、用戶點擊了“編輯”(文字可設)銨鈕,<logic:action1/>會將formBean中選定的那條記錄putformBeanvalues中,用戶看到的表單中是這條記錄數據,其中包含了主關鍵字屬性值對。update后作更新操作。

       

     

    DAOupdate方法 (摘自DAO類+通用持久類,實現數據增、刪、改、查)

    newxy(新坐標)在設計數據插入與更新的方法時采用了DelphiC++Builder數據更新策略,DataSet有個方法ApplyUpdates,如果是在組件中新增一行,作插入操作,如果是對組件中某條記錄數據更改,作更新操作。newxy(新坐標)net.newxy.dbm.DBM有個update(Object dto)方法,如果持久類對象不含主關鍵字段值,或所含主關鍵字段值在表中已存在,作插入操作,如果含有的主關鍵字段值表中已存在,作更新操作。

    1. 數據插入:Object update(Object dto) throws Exception;

    舉例:

        try{

    net.newxy.dbm.BaseDAO dao=new net.newxy.dbm.BaseDAO();

    net.newxy.dbm.DynaDto dynaDto=new net.newxy.dbm.DynaDto();

            dynaDto.set_table("table1");//設置表名

            dynaDto.set(“field1”,”……”);//為字段field1賦值

            dynaDto.set(“field2”,”……”);//為字段field2賦值

            Object result=dao.update(dynaDto);

        }catch(Exception e){

            ......

    }

    例中兩字段field1field2不是主關鍵字段,不用設置主關鍵段值,主關鍵字段值會自動得到,是原有最大值加一。

    如果設置主關鍵字段值,如:dynaDto.set(“id”,”100”);newxy(新坐標)會檢查賦給的主關鍵字值是否已存在,如果存在,作更新(update)操作,如果不存在,作插入(insert)操作。

    判斷是更新還是插入操作,可以根據返回的result值來判斷,如果result值為空,是作更新操作,如果result不空是作插入操作。

    Object result=dao.update(dynaDto);

    如果想需要知道自動賦給的主關鍵字段值,可以用如下方法:

            Object result=dao.update(dynaDto);

            Object idValue=null;

            If(result!=null)

    idValue=((DynaDto)result).get(“id”);

                idValue就是自動賦給的主關鍵字段值。

    2. 數據更新:

        try{

    net.newxy.dbm.BaseDAO dao=new net.newxy.dbm.BaseDAO();

    net.newxy.dbm.DynaDto dynaDto=new net.newxy.dbm.DynaDto();

            dynaDto.set_table("table1");//設置表名

            dynaDto.set(“id”,”……”);//為主關鍵字段賦值

            dynaDto.set(“field1”,”……”);//為字段field1賦值

            dynaDto.set(“field2”,”……”);//為字段field2賦值

            Object result=dao.update(dynaDto);

        }catch(Exception e){

            ......

    }

    與數據插入相比增加了dynaDto.set(“id”,value)作用是為主關鍵字段賦值。

    需注意:如果dynaDto.set(“id”,value)賦給的value在數據庫表中已存在,dao.update(dynaDto)方法仍然作更新操作。

     

    newxy新坐標技術網站:http://www.newxy.net

    posted on 2007-04-13 23:53 newxy新坐標 閱讀(995) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 很黄很污的网站免费| 亚洲国产成人精品激情| 人妻无码中文字幕免费视频蜜桃 | 在线观看亚洲免费视频| 亚洲另类图片另类电影| aⅴ在线免费观看| 亚洲国产精品免费在线观看| 亚洲欧美不卡高清在线| 在线观看免费宅男视频| 亚洲国产成人久久一区二区三区| 中文字幕的电影免费网站| 麻豆最新国产剧情AV原创免费| 免费欧洲美女牲交视频| 美女裸体无遮挡免费视频网站| 国产一区二区三区免费| 久久久婷婷五月亚洲97号色| 又大又硬又粗又黄的视频免费看| 最近2022中文字幕免费视频| 77777亚洲午夜久久多人| 99精品视频在线观看免费| 成人免费无码大片a毛片软件| 亚洲成AV人片一区二区密柚| 国产区图片区小说区亚洲区| 亚洲精品国精品久久99热| 33333在线亚洲| 免费无码黄动漫在线观看| 国产成人精品亚洲| 亚洲中文字幕在线乱码| 99精品视频在线视频免费观看| 亚洲国产综合精品一区在线播放| 亚洲男同gay片| 亚洲人成无码久久电影网站| 毛片免费在线观看| 亚洲欧洲日韩国产一区二区三区| 222www免费视频| 羞羞漫画在线成人漫画阅读免费| 成年美女黄网站色大免费视频| 亚洲成人动漫在线观看| 免费一级毛片一级毛片aa| 99爱在线观看免费完整版| 亚洲日韩精品无码专区|