.net中使用oracle資料庫分頁小技巧
近日公司一網站專案,要呼叫其它系統(call center系統)的oracle資料庫資料,只能連線查詢,無法建立儲存過程,所以只能在sql語句上動腦筋實現分頁:
///
/// Oracle通用分頁查詢函式 by 菩提樹下的楊過 2010-01-07
///
/// 表名
/// (要查詢的)欄位列表
/// 查詢條件(不帶where)
/// 排序欄位
/// 分頁大小
/// 頁索引
/// (輸出引數)記錄總數
/// (輸出引數)分頁總數
///
public DataSet QueryOracle(string tableName, string fields, string sqlWhere, string orderFields, int pageSize, int pageIndex, out int recordCount, out int pageCount)
{
if (string.IsNullOrEmpty(sqlWhere)) { sqlWhere = "1=1"; }
DataSet ds = null;
EnLib.Database _db = null;
recordCount = 0;
pageCount = 0;
try
{
_db = EnLib.DatabaseFactory.CreateDatabase();
//先計算總記錄數
string sql = string.Format("select Count(*) from {0} where {1}", tableName, sqlWhere);
recordCount = int.Parse(_db.ExecuteScalar(CommandType.Text, sql).ToString());
//再確定總頁數
if (recordCount % pageSize == 0)
{
pageCount = recordCount / pageSize;
}
else
{
pageCount = recordCount / pageSize + 1;
}
if (pageIndex
if (pageIndex > pageCount) { pageIndex = pageCount; }
//確定起始點
int _start = pageSize * (pageIndex - 1) + 1;
int _end = _start + pageSize - 1;
if (_end > recordCount) { _end = recordCount; }
//如果fields為*,則查詢所有欄位列表
if (fields == "*")
{
sql = "select table_name,column_name from user_tab_columns where table_name='" + tableName.ToUpper().Trim() + "'";
IDataReader dr = _db.ExecuteReader(CommandType.Text, sql);
string _allFields = "";
while (dr.Read())
{
_allFields += dr[1] + ",";
}
dr.Close();
fields = _allFields.Trim(',');
if (orderFields.Length == 0)
{
orderFields = fields.Split(',')[0];
}
}
if (orderFields.Length == 0)
{
orderFields = fields.Split(',')[0];
}
//構造sql語句
sql = string.Format("select RecordID,{0} from (select rownum RecordID,{0} from (select {0} from {1} where {2} order by {3})) where RecordID between {4} and {5}", fields, tableName, sqlWhere, orderFields, _start, _end);
ds = _db.ExecuteDataSet(CommandType.Text, sql);
}
catch
{
}
return ds;
}
注:用到了微軟的企業庫EnLib
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1343/viewspace-2800238/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫中的分頁查詢Oracle資料庫
- oracle資料庫用sql實現快速分頁Oracle資料庫SQL
- mysql 使用技巧 分頁limitMySqlMIT
- asp.net Oracle資料庫左側目錄樹及右側資料繫結及分頁ASP.NETOracle資料庫
- SQL - 常用資料庫分頁SQL資料庫
- MySql、SqlServer、Oracle 三種資料庫查詢分頁方式MySqlServerOracle資料庫
- oracle資料庫的劃分Oracle資料庫
- PG資料庫SQL最佳化小技巧資料庫SQL
- 使用陣列建立分頁資料陣列
- PDF.NET記憶體資料庫的使用小結記憶體資料庫
- Oracle資料庫的空間管理技巧Oracle資料庫
- 【資料庫使用-oracle索引的建立和分類】二資料庫Oracle索引
- 【資料庫使用-oracle索引的建立和分類】一資料庫Oracle索引
- Vue 使用中的小技巧Vue
- 使用network_link複製Oracle資料庫Oracle資料庫
- asp.net分頁控制元件AspNetPager的使用,使用傳統分頁和儲存過程分頁ASP.NET控制元件儲存過程
- python實現資料分頁小練習Python
- 3分鐘短文:書接上回,Laravel資料庫遷移的那些個小技巧Laravel資料庫
- .NET Standard 類庫的使用技巧
- asp.net mvc 中利用jquery datatables 實現資料分頁顯示ASP.NETMVCjQuery
- 常用3種資料庫的Sql分頁資料庫SQL
- 資料庫分頁;簡單整理測試資料庫
- oracle 資料分頁查詢 (轉貼收集)Oracle
- 基於MSSQLSQL資料庫大批次資料的分塊分頁查詢SQL資料庫
- 使用Oracle Net實現限制特定IP訪問資料庫Oracle資料庫
- Laravel 使用 Oracle 資料庫LaravelOracle資料庫
- Oracle資料庫中convert()函式,在瀚高資料庫中如何替換使用?Oracle資料庫函式
- access資料庫大資料量分頁的問題資料庫大資料
- 小技巧|移動端網頁除錯神器Eruda使用技巧網頁除錯
- 百億級資料 分庫分表 後怎麼分頁查詢?
- 資料庫系列:巨量資料表的分頁效能問題資料庫
- 15個高效的MySQL資料庫查詢小技巧MySql資料庫
- MySQL 海量資料的 5 種分頁方法和優化技巧MySql優化
- Sliverlight DataGrid 分頁 資料庫中分頁,速度更快資料庫
- 三個使用資料泵(Data Pump)的小技巧
- Oracle資料庫10個小問題Oracle資料庫
- JDBC【資料庫連線池、DbUtils框架、分頁】JDBC資料庫框架
- 常見資料庫的分頁實現方案資料庫