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