国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Access > 正文

第三部分,BETA2操作ACCESS數(shù)據(jù)庫

2024-09-07 19:04:56
字體:
供稿:網(wǎng)友
第三節(jié)    通過oledbdataadapte來操作數(shù)據(jù)庫!
呵呵,朋友好??!又天亮了,熬了一個晚上,現(xiàn)在頭腦已經(jīng)不是很清楚了,不過還不想休息!接著說說我們的數(shù)據(jù)庫操作吧!前面我們已經(jīng)說了如何操作數(shù)據(jù)庫,但幾乎全部是通過oledbcommand和oledbdatareader來做的,這次我們說說如何通過oledbdataadapter來操作數(shù)據(jù)庫!由于oledbdataadapter是dataset和數(shù)據(jù)源之間建立聯(lián)系的一個橋梁,而dataset我想大家都知道在ado.net中所占的地位,所以知道如何通過它來操作數(shù)據(jù)庫就是必須的了!

好了,不廢話了!在前面我們已經(jīng)用到過一次oledbdataadapter來執(zhí)行“select”語句,我門在回憶一次看看那段代碼!(我適當簡化了)

oledbconnection conn = getconn();     //getconn():得到連接對象
oledbdataadapter adapter = new oledbdataadapter("select * from notes order by posttime desc",conn);
system.data.dataset mydataset = new system.data.dataset();;  //定義dataset
adapter.fill(mydataset,"notes");    
conn.close();

整個過程分以下幾步:
1.    建立數(shù)據(jù)庫連接(我是通過自己的函數(shù),在前面的文章中有代碼)
2.    實例化oledbdataadapter對象!
3.    建立一個dataset對象,執(zhí)行sql語句得到的表添加到其中
4.    關閉數(shù)據(jù)庫連接
通過上面的步驟我們就可以使用databind將我們得到的數(shù)據(jù)綁定到特定的控件上了!


下面我們看看,如何通過oledbdataadapter來執(zhí)行刪除特定的數(shù)據(jù)庫記錄?。╠elete)

由于執(zhí)行刪除、修改、添加都比前面的麻煩,所以我們還是先看例程,然后自己體會一下,程序如下:

//刪除特定記錄,通過string類型的id刪除字段
public boolean delnote(string delid)
{
boolean tempvalue=false;
       //連接數(shù)據(jù)庫
       try
       {
               oledbconnection conn = getconn();     //getconn():得到連接對象
                                
              string selectstr = "select * from notes where id=" + delid;
oledbdataadapter mydataadapter = new oledbdataadapter(selectstr,conn);

//建立oledbcommandbuilder,必須!
oledbcommandbuilder mybuilder = new oledbcommandbuilder(mydataadapter);
              dataset ds = new dataset();     //建立dataset()實例
              mydataadapter.fill(ds,"notes");
        
        //下面的可以簡化,由于我開始是選擇了所有的記錄,所以就用的是集合方式
              foreach(datarow dr in ds.tables["notes"].rows)
              {                
                    if(dr["id"].tostring().equals(delid))
                    {
                        dr.delete();
                    }
                  }
              mydataadapter.update(ds,"notes");
                        
            
              //假如執(zhí)行成功,則,返回true,否則,返回false
              conn.close();
           tempvalue=true;
           return(tempvalue);
       }
       catch(exception e)
          {
               throw(new exception("數(shù)據(jù)庫刪除出錯:" + e.message)) ;
       }
}


這個程序和我們前面用到的刪除例程是執(zhí)行同樣的功能的,我這里改成了用mydataadapter來達到同樣的效果!

要通過mydataadapter執(zhí)行delete操作,我們要有下面的幾步:

1.    建立數(shù)據(jù)庫連接(通過:oledbconnection conn = getconn();)
2.    實例化oledbdataadapter對象!此處并沒有用delete語句,而是先用select語句把要刪除的記錄取得
3.    建立一個dataset對象,并把執(zhí)行select語句得到的記錄添加到其中
4.    建立oledbcommandbuilder對象! 并讓它與我們前面的oledbdataadapter對象關聯(lián)!語句如下:oledbcommandbuilder mybuilder = new oledbcommandbuilder(mydataadapter);
5.    刪除dataset中包含表的特定記錄

6.    執(zhí)行oledbdataadapter對象的update命令更新數(shù)據(jù)庫,語句如下: mydataadapter.update(ds,"notes");
7.    關閉數(shù)據(jù)庫連接


上面步驟中的第4步,我們建立了一個oledbcommandbuilder對象,注意是必須的!??!我們將它和oledbdataadapter關聯(lián)起來,監(jiān)視rowupdating事件的發(fā)生!在我們刪除了指定的記錄后,要通過執(zhí)行oledbdataadapter對象的update命令來更新數(shù)據(jù)庫!

其實,上面的結(jié)構(gòu)不僅適合與delete操作,同樣適合insert、update操作的,只要我們把上面的第5步改成相應的操作語句就可以的!

備注:
在ms自帶的幫助中,它是使用下面的方式:
string myselecttext = "select * from categories order by categoryid";
string myselectconn = "provider=microsoft.jet.oledb.4.0;data source=nwind_rw.mdb";
oledbdataadapter mydataadapter = new oledbdataadapter(myselecttext,myselectconn);
mydataadapter.deletecommand.commandtext = "delete from categories where categoryname='produce'";
mydataadapter.deletecommand.connection = mydataadapter.selectcommand.connection;

不過不幸的是,這個方法我用了各種方法測試了多次都沒有成功,總是提示錯誤,最后我得到的結(jié)論是:ms的幫助又有個地方錯了,簡直了,都不知道怎么回事!如果哪為朋友通過這樣的方式做成功了,也希望能告訴一下,我反正是測了一個晚上也沒有找到正確的方法!

好了,這次就到這里了,以后,我再有什么體會還會補充!也希望朋友們同樣能把自己學習中的體會寫出來和大家一起分享!

呵呵,真該休息了,好困!

最大的網(wǎng)站源碼資源下載站,

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 章丘市| 卢氏县| 揭东县| 娱乐| 清丰县| 安阳县| 灵武市| 应用必备| 九江县| 剑阁县| 定西市| 红桥区| 介休市| 永嘉县| 榆林市| 西华县| 聊城市| 靖江市| 垦利县| 化德县| 山西省| 灌南县| 延安市| 呈贡县| 临颍县| 临泽县| 常熟市| 枣阳市| 谢通门县| 巧家县| 临江市| 繁昌县| 尉犁县| 都昌县| 无棣县| 长乐市| 彩票| 芜湖县| 汪清县| 石棉县| 旅游|