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

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

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

    隨筆-39  評(píng)論-33  文章-0  trackbacks-0
     

    從運(yùn)用角度來(lái)理解newxyDAOupdate方法

    胡立新

    關(guān)于newxyDAOupdate是更新還是插入,文檔中有說(shuō)明。在此談運(yùn)用中的一些情況:

        1jsp面表上有表單<nhtml:form ...>...</nhtml:form><html:form ...>...</html:form>,但之前沒有經(jīng)查詢或其它方法得到formBean。這時(shí)標(biāo)簽會(huì)實(shí)例化一個(gè)formBean。由于沒有數(shù)據(jù),用戶看到的是空白頁(yè),填入數(shù)據(jù)后,update作插入操作,這是因?yàn)橹麝P(guān)鍵字值為空,除非用戶顯式地賦給主關(guān)鍵字值存在于表中。

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

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

       

     

    DAOupdate方法 (摘自DAO類+通用持久類,實(shí)現(xiàn)數(shù)據(jù)增、刪、改、查)

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

    1. 數(shù)據(jù)插入: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");//設(shè)置表名

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

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

            Object result=dao.update(dynaDto);

        }catch(Exception e){

            ......

    }

    例中兩字段field1field2不是主關(guān)鍵字段,不用設(shè)置主關(guān)鍵段值,主關(guān)鍵字段值會(huì)自動(dòng)得到,是原有最大值加一。

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

    判斷是更新還是插入操作,可以根據(jù)返回的result值來(lái)判斷,如果result值為空,是作更新操作,如果result不空是作插入操作。

    Object result=dao.update(dynaDto);

    如果想需要知道自動(dòng)賦給的主關(guān)鍵字段值,可以用如下方法:

            Object result=dao.update(dynaDto);

            Object idValue=null;

            If(result!=null)

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

                idValue就是自動(dòng)賦給的主關(guān)鍵字段值。

    2. 數(shù)據(jù)更新:

        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");//設(shè)置表名

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

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

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

            Object result=dao.update(dynaDto);

        }catch(Exception e){

            ......

    }

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

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

     

    newxy新坐標(biāo)技術(shù)網(wǎng)站:http://www.newxy.net

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 韩国免费A级毛片久久| 亚洲综合色视频在线观看| 久久久久久久久无码精品亚洲日韩| 三年片在线观看免费观看高清电影| 日韩在线一区二区三区免费视频 | 国产成人免费爽爽爽视频| 亚洲娇小性色xxxx| 亚洲色婷婷综合开心网| 国产永久免费高清在线| 久久亚洲精品专区蓝色区| 一区二区三区亚洲视频| 久久综合AV免费观看| 边摸边吃奶边做爽免费视频网站| 亚洲精品无码99在线观看| 免费无码肉片在线观看| 国产亚洲精品免费| 国产成人无码免费视频97| 无套内谢孕妇毛片免费看看 | 亚洲精品无码不卡在线播放HE| 爱情岛论坛网亚洲品质自拍| 亚洲熟女乱综合一区二区| 亚洲中文字幕第一页在线| 一级做a爰片久久毛片免费陪| 免费h视频在线观看| 老司机在线免费视频| 免费永久在线观看黄网站| 国产亚洲婷婷香蕉久久精品| 亚洲美女色在线欧洲美女| 亚洲成aⅴ人片久青草影院按摩| 国产免费久久精品丫丫| 综合在线免费视频| 免费又黄又硬又爽大片| 色婷婷六月亚洲婷婷丁香| 国产亚洲视频在线| 免费女人高潮流视频在线观看| 色播在线永久免费视频| 久久亚洲精品中文字幕三区| 中文字幕精品三区无码亚洲| 最近更新免费中文字幕大全| 女人18特级一级毛片免费视频| 国产亚洲真人做受在线观看|