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

首頁 > 開發(fā) > 綜合 > 正文

VS2005中使用強類型DataSet簡化開發(fā)

2024-07-21 02:29:40
字體:
供稿:網(wǎng)友
  在日常開發(fā)中,為了編寫數(shù)據(jù)的增加、更新、修改、刪除等功能而不得不面對枯燥的代碼,做重復(fù)又重復(fù)的工作。.net 2.0正式版的發(fā)布,對我們程序開發(fā)人員來說無疑是一件很大的喜事,visual studio 2005 的一些新的增強功能和ado.net 2.0的新特性讓我們開發(fā)高可伸縮的多層數(shù)據(jù)庫應(yīng)用程序更加簡單和快捷。

  在.net 1.1下就可以使用強類型數(shù)據(jù)集,可是在visual studio 2003里開發(fā)起來還是有一些不方便,在visual studio 2005里對dataset的設(shè)計視圖做了很大的改進,因為ado.net 2.0增加了tableadapter對象,所以現(xiàn)在也可以在dataset設(shè)計視圖里添加datatable的表適配器。以前的typeddatasets只是一些數(shù)據(jù)實體(啞對象,只有屬性的類)的集合,并不能很方便的自我管理持久化,以及數(shù)據(jù)完整性驗證等。現(xiàn)在可以很方便的實現(xiàn)這些。

  下邊通過一個例子來詳細介紹如何通過vs2005來生成強類型dataset簡化開發(fā)流程,生成可伸縮性的多層數(shù)據(jù)庫應(yīng)用程序。

  首先新建立一個web網(wǎng)站項目,在[解決方案資源管理器]→[添加新項] →[數(shù)據(jù)集],命名為authors.xsd,由于強類型dataset需要放到app_code目錄,如果此時項目文件中沒有app_code目錄,ide會提示是否創(chuàng)建,我們選擇"是"即可。

  此時ide會自動打開我們剛才建立好的authors.xsd文件,并且開始運行tableadapter配置向?qū)В绻鹷eb.config沒有數(shù)據(jù)庫連結(jié)字符串,此時我們需要新建立一個連接:選擇[新建連結(jié)] →[microsoft sql server] →[選擇系統(tǒng)自帶的pubs數(shù)據(jù)庫] →[將新建立的連結(jié)字符串保存到應(yīng)用程序配置文件中]。

  在接下來的選擇命令類型的時候,ide出來三個選項來供用戶選擇訪問呢數(shù)據(jù)庫的形式:

  1、 使用sql語句,如果是單個表,向?qū)Э梢宰詣由?insert,update和delete語句。本例子也是使用的這種方法。

  2、 創(chuàng)建新的存儲過程。同樣如果是單個表,向?qū)Э梢宰詣由?insert,update和delete語句。

  3、 使用現(xiàn)有存儲過程。需要為每一個命令選擇相應(yīng)的現(xiàn)有存儲過程。

  我們這里選擇[使用sql語句] →[查詢生成器] →[authors表,選擇所有列],此時查詢生成器會自動給我們生成 sql語句(select authors.* from authors)。[高級選項],可以選擇是否生成insert,update和delete語句,使用開放式并發(fā)來防止并發(fā)沖突,刷新數(shù)據(jù)表,用來驗證 insert和update語句,為了能夠更清晰的介紹使用方法,我們這里全部都不選擇,而讓我們以后根據(jù)需要自行添加。[選擇要生成的方法] ,我們只需要使用[返回datatable],其余的選項的對號去掉。

  此時創(chuàng)建向?qū)詣咏o我們生成"select語句","數(shù)據(jù)表的映射",以及"get方法"。我們創(chuàng)建的過程就結(jié)束了。這是我們發(fā)現(xiàn)dataset.xsd會自動生成一個authors表和一個包含get方法的數(shù)據(jù)集authorstableadapter。

  同樣,在我們建立好的數(shù)據(jù)表[authorstableadapter]右鍵→添加查詢,參照上邊的方法生成deletequery(刪除),insertquery(增加),updatequery(更新)、selectdetail(返回詳細結(jié)果,使用select(返回行)選項,生成一個只包括一條數(shù)據(jù)的數(shù)據(jù)集) 以及scalarquery(返回數(shù)據(jù)統(tǒng)計)。

  以下是生成的sql語句,需要手工修改成自己需要的代碼:

deletequery:delete from [authors] where ([au_id] = @original_au_id)
insertquery:insert into authors (au_lname,au_fname,phone,address,city,state,zip,contract) values (@au_lname,@au_fname,@phone,@address,@city,@state,@zip,@contract)

updatequery :update authors set [email protected]_lname,[email protected]_fname,[email protected],
[email protected],[email protected],[email protected],[email protected],[email protected] where [email protected]_id

selectdetail:select authors.* from authors where [email protected]_id

scalarquery :select count(*) from authors


  打開default.aspx,并添加一個gridview控件,并且添加一個objectdatasource控件,配置objecctdatasource的數(shù)據(jù)源,此時我們會發(fā)現(xiàn)在配置的時候系統(tǒng)已經(jīng)認出來我們剛才建立的強類型dataset了,[選擇業(yè)務(wù)對象] →[authorstableadapters.authorstableadapter] →[定義數(shù)據(jù)方法]分別選擇select,update,insert,delete的方法,即我們剛才建立的deletequery,insertquery,updatequery,selectdetail,scalarquery和系統(tǒng)生成的getdate]。此時配置obejctdatasource就完工了。

  把gridview的datasourceid設(shè)置成objectdatasource,此時我們就已經(jīng)建立好了完整的一個數(shù)據(jù)編輯功能。看是不是很簡單。

  當然,我們在進行企業(yè)開發(fā)的時候,更習慣于在后臺編輯,現(xiàn)在我就給出在后臺進行手工編輯的代碼:

//數(shù)據(jù)綁定部分
if (!page.ispostback)
{
 authorstableadapters.authorstableadapter ta = new authorstableadapters.authorstableadapter();
 //authorstableadapter就是我們建立的強類型的
 gridview1.datasource = ta.getdata();
 gridview1.databind();
}
//刪除數(shù)據(jù)
protected void gridview1_rowdeleting(object sender, gridviewdeleteeventargs e)
{
 authorstableadapters.authorstableadapter ta = new authorstableadapters.authorstableadapter();
 ta.deletequery(gridview1.datakeys[e.rowindex].value);
}
//返回單條數(shù)據(jù)
authorstableadapters.authorstableadapter ta = new authorstableadapters.authorstableadapter();
datatable dt = ta.selectdetail(request.querystring["id"].tostring());
if (dt.rows.count > 0)
 response.write(dt.rows[0]["address"].tostring());
//返回數(shù)據(jù)統(tǒng)計
authorstableadapters.authorstableadapter ta = new authorstableadapters.authorstableadapter();
response.write(ta.scalarquery().tostring());

  至此,我們不難發(fā)現(xiàn),2005給我們的開發(fā)提供了飛躍性的改變。我們可以通過強類型數(shù)據(jù)集很方便快速的進行多層構(gòu)架開發(fā),并且提高開發(fā)速度。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 和硕县| 太仓市| 新干县| 礼泉县| 屯留县| 外汇| 呈贡县| 沈丘县| 棋牌| 平和县| 云龙县| 建水县| 高青县| 华蓥市| 巴林左旗| 华阴市| 宜州市| 上栗县| 桦甸市| 九龙县| 扎鲁特旗| 洛宁县| 昆明市| 鄂尔多斯市| 鄂托克旗| 湘潭市| 临沧市| 营口市| 景宁| 封丘县| 中江县| 深州市| 团风县| 闽清县| 塘沽区| 绥江县| 沧州市| 阿鲁科尔沁旗| 定西市| 伽师县| 吴旗县|