使用微軟企業庫,非分頁sql語句得到分頁資料方法

2021-04-20 21:33:47 字數 3741 閱讀 1696

最近使用微軟企業庫,在做分頁繫結的時候發現好象還沒有多少通用的方法.為了靈活和換資料庫,我不能使用儲存過程.為了開發速度最快.我就是用datagrid繫結了.

以前長用的 dataadapter.fill(ds, startrecordno, pagesize, tablename); 這樣獲取某一頁的資料.但是用微軟企業庫總麼獲得這樣的資料按 .網上介紹 database 類的  getdataadapter() 函式的文章太少了. 不過最終做成通用分頁函式了.

用一條sql語句 select * from aaa 這樣的語句,不是分頁sql語句.得到總數目,總頁數

現在定義的資料訪問介面

public

inte***ce

isysmangerprovider

我門在微軟企業庫外面在包一層,放一些可以通用的函式 ,也可以簡化資料提供者類的構造,和減少**膨脹

#region

資料提供者,通用基礎類

//////

資料提供者,通用基礎類

///

public

abstract

class

dataproviderbaseclass

protected

dataproviderbaseclass(

inti): 

this

()protected

dataproviderbaseclass(

string

connectionname): 

this

()protected

dataproviderbaseclass(selectdatabae sdb):

this

()#endregion

#region

執行sql語句得到dataset型別資料

//////

執行sql語句得到dataset型別資料

///

///

///

protected

dataset executedatasetbysqlcomm(

string

sqlcomm)

return

ds;}

#endregion

#region

執行sql語句獲得dataset資料 ,提供分頁

//////

執行sql語句獲得dataset資料 ,提供分頁

///

///當前行數

///一頁分頁數量

///sql語句

///dataset物件

protected

dataset executedatasetbysqlcomm(

intstartrecordno, 

intpagesize, 

string

sqlcomm, 

string

tablename)

return

ds;}

#endregion

#region

執行sql語句返回影響的行數目

//////

執行sql語句返回影響的行數目

///

///

///

protected

intexecintbysqlcomm(

string

sqlcomm)

}#endregion

#region

檢測dataset物件是否有資料

//////

檢測dataset物件是否有資料

///

///要檢測的物件

///返回結果

public

static

bool

checkdataset(dataset ds)

else

}catch

}#endregion

#region

檢測dataset物件是否有資料,分頁支援

//////

檢測dataset物件是否有資料,分頁支援

///

///要檢測的物件

///返回結果

public

static

bool

checkdatasetforpage(dataset ds, 

refint

resultcount)

else

}else

}catch

}#endregion

}#endregion

好了 最後資料提供者類就很簡單了.

public

class

sysmangerprovider : dataproviderbaseclass ,isysmangerprovider

public

sysmangerprovider(

string

connectionname):

base

(connectionname)

public

sysmangerprovider(selectdatabae sdb): 

base

(sdb)

#endregion

#region

執行sql語句得到dataset型別資料

//////

執行sql語句得到dataset型別資料

///

///

///

public

dataset getdatasetbysqlcomm(

string

sqlcomm)

#endregion

#region

執行sql語句獲得dataset資料 ,提供分頁

//////

執行sql語句獲得dataset資料 ,提供分頁

///

///當前行數

///一頁分頁數量

///sql語句

///dataset物件

public

dataset getdatasetbysqlcomm(

intstartrecordno, 

intpagesize, 

string

sqlcomm,

string

tablename)

#endregion

#region

執行sql語句返回影響的行數目

//////

執行sql語句返回影響的行數目

///

///

///

public

intexecsqlcomm(

string

sqlcomm)

#endregion

}在前台繫結的時候就非常簡單了

intresultcount =0

;this

.ds 

=this

.sm.getdatasetbysqlcomm(startindex, 

this

.datagrid1.pagesize, 

"select * from  pageinfo  ",

"showlist");

if(dataproviderbaseclass.checkdatasetforpage(

this

.ds, 

refresultcount))

else

好了 解決用微軟企業庫的sql語句分頁問題.

微軟企業庫 資料訪問

微軟企業庫 資料訪問 第一步 新增程式集引用 需要在專案中新增對下列程式集的引用 microsoft.practices.enterpriselibrary.common.dll microsoft.practices.enterpriselibrary.data.dll microsoft.pra...

微軟企業庫資料訪問

database db null region 一般呼叫 db databasefactory.createdatabase connection string int count int db.executescalar commandtype.text,select count from cms...

微軟企業庫5 0 呼叫 MySql 分頁儲存過程

1.需要完成兩個前置條件後才可以使用 微軟企業庫5.0 呼叫 mysql 儲存過程 微軟企業庫5.0 支援 mysql mysql 分頁儲存過程 using system.data using system.data.common using microsoft.practices.enterpri...