.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資料庫
- mysql 使用技巧 分頁limitMySqlMIT
- Laravel 使用 Oracle 資料庫LaravelOracle資料庫
- Oracle資料庫中convert()函式,在瀚高資料庫中如何替換使用?Oracle資料庫函式
- .NET Standard 類庫的使用技巧
- PG資料庫SQL最佳化小技巧資料庫SQL
- 使用陣列建立分頁資料陣列
- python實現資料分頁小練習Python
- 使用instantclient連線oracle資料庫clientOracle資料庫
- 使用NID修改Oracle資料庫名Oracle資料庫
- 【SQL】Oracle資料庫sql最佳化小技巧索引不管用怎麼辦01SQLOracle資料庫索引
- Oracle資料庫中遇到的坑Oracle資料庫
- 3分鐘短文:書接上回,Laravel資料庫遷移的那些個小技巧Laravel資料庫
- 【.NET小科普之一】資料庫資訊在哪兒資料庫
- 在.NetCore(C#)中使用ODP.NET Core+Dapper操作Oracle資料庫NetCoreC#APPOracle資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(四)如何禁用透明大頁Oracle資料庫
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- 資料庫系列:巨量資料表的分頁效能問題資料庫
- 百億級資料 分庫分表 後怎麼分頁查詢?
- Vue 使用中的小技巧Vue
- 2.10.3 使用 Oracle Automatic Storage Management (Oracle ASM) 克隆資料庫OracleASM資料庫
- Akka.net 效能測試兼使用小技巧
- Android Paging分頁庫的學習(二)—— 結合Room資料庫進行分頁載入AndroidOOM資料庫
- 15個高效的MySQL資料庫查詢小技巧MySql資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- 12、Oracle中的其它資料庫物件Oracle資料庫物件
- 在多資料來源中對部分資料表使用shardingsphere進行分庫分表
- 備忘錄:關於.net程式連線Oracle資料庫Oracle資料庫
- 【SqlServer】 理解資料庫中的資料頁結構SQLServer資料庫
- MySQL 海量資料的 5 種分頁方法和優化技巧MySql優化
- .net core 中使用Log4net輸出日誌到Mysql資料庫中MySql資料庫
- 「Oracle」Oracle 資料庫安裝Oracle資料庫
- .Net/C#分庫分表高效能O(1)瀑布流分頁C#
- oracle分表效率,資料庫分庫分表是什麼,什麼情況下需要用分庫分表Oracle資料庫
- oracle資料庫使用者建立步驟Oracle資料庫
- 4.1.3 使用 Oracle Restart 元件啟停資料庫OracleREST元件資料庫
- oracle資料庫使用rman備份指令碼Oracle資料庫指令碼
- [20181224]使用odbc連線oracle資料庫.txtOracle資料庫