com.joybase.DB的原始碼(1)

來源:互聯網
上載者:User
原始碼 using System;
using System.Collections;
using System.Data;
using System.Globalization;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms.Design;
namespace com.joybase.DB
{
/// <summary>
/// <b>程式集名稱:com.joybase.DB.dll(開發版)</b><br/>
/// 版本號碼:1.4.0.0(for VS.NET正式版);<br/>
/// 開發人員::開心就好<br/>
/// </summary>
/// <remarks>
/// <b>電子郵件:</b>joy@china.com<br/>
/// <b>網站:</b>http://www.joycode.com(2001/12/1開通)<br/>
/// 功能列表
/// 本程式集由<font color="red"><b>開心就好</b></font>開發,如果您在使用中遇到任何疑問,可以<a href="joy@china.com">致信反饋</a>,十分感謝,請在信件中給出使用的程式碼片段及出錯的詳細描述!<br/>
/// 資料庫操作類,效果有:<br/>
/// 1.可以跨越任何ADO.NET支援的資料庫;(已經支援,經過測試的資料有MS Access以及MS SQLServer2000,以及Oracle8i系列)<br/>
/// 2.可以執行預存程序及普通SQL語句;(已經支援)<br/>
/// 3.可以得到預存程序返回的值及出口參數;(已經支援)<br/>
/// 4.簡單的可以達到分頁效果;(DataSet已經支援,DataReader已支援)<br/>
/// 5.可以以DataSet、DataReader、DataTable以及無結果輸出;<br/>
/// 6.事務批處理功能(暫不支援)<br/>
/// 7.日後將支援System.Data.ODBC驅動(暫不支援)<br/>
/// <div align="center"><b>更新列表(1.3.0.1)</b></div>
/// 1.增加了一個JoyBaseDBException異常類,使用者可以自己捕捉異常<br/>
/// 2.JoyBaseDBException異常類的Reason屬性可以查閱當前異常的錯誤原因<br/>
/// 3.更新了部分樣本<br/>
/// 4.本升級是由“藍”請求而特意打造,在此表示一併感謝;<br/>
/// <div align="center"><b>更新列表(1.3.0.0)</b></div><br/>
/// 1.修改了原來的構造方法,加進了無參構造,去除了原來的單參構造方法;<br/>
/// 2.新增加兩個屬性,即ConnectionSetName,相當於原來的構造方法中的單一入參,即在Config檔案中配置連接字串的鍵名,以及ConnectionString,可以直接賦入資料庫連接字串,如果此鍵賦入,則將覆蓋原來的ConnectionStringSetName;<br/>
/// 3.修改了原來的ExecuteDataTable的Bug;<br/>
/// 4.修改了上一版本的兩個分頁方法,將out型參數提取為屬性;<br/>
/// 5.內部的一些其它小型Bug
/// <div align="center"><b>更新列表(1.2.0.3)</b></div><br/>
/// 1.去除了原來的Execute方法,將其執行分解為多個方法;<br/>
/// 2.去除了ReturnType屬性以及ResultType枚舉類型。<br/>
/// 3.增加了ExecuteNoresult方法,傳回值為紀錄影響數;<br/>
/// 4.增加了ExecuteDataTable方法,返回一個System.Data.DataTable,該表的名稱預設為“Table”<br/>
/// 5.增加了ExecuteDataReader方法,返回一個System.Data.IDataReader對象<br/>
/// 6.重載ExecuteDataReader方法,支援分頁顯示,參數列表為<br/>
/// ExecuteDataReader(int PageSize,int CurrentPage,out int PageCount,out int PageSize)<br/>
/// PageSize:每頁顯示的紀錄數;<br/>
/// CurrentPage;需要返回的頁面號;<br/>
/// PageCount:回參,返回頁面總數;<br/>
/// PageSize:回參,返回紀錄總數;<br/>
/// 7.增加了ExecuteDataSet方法,並且有四次重載,分別是<br/>
/// (1)ExecuteDataSet()<br/>
/// 返回一個System.Data.DataSet<br/>
/// (2)ExecuteDataSet(string TableName);<br/>
/// 入參為表的名稱;<br/>
/// (3)ExecuteDataSet(string Tablename,int StartRecord,int MaxRecord);<br/>
/// 返回從第StartRecord條紀錄開始數的總共MaxRecord條紀錄。<br/>
/// (4)ExecuteDataSet(string TableName,int PageSize,int CurrentPage,out int PageCount,out int RecordCount)<br/>
/// 請參閱關於DataReader分頁方法的敘述。<br/>
///
/// </remarks>
/// <example>
///
/// 注意:在運行樣本之前,您必須滿足以下條件:<ol><li>請先在您的設定檔(如果是ASP.NET程式為Web.Config,如果是Win Form程式,則為App.Config檔案,加上以下一句話:
/// <appSettings><br/>
///     <add key="DSN" value="server=(local)\NetSDK;database=Northwind;Trusted_Connection=yes" /><br/>
/// </appSettings\><br/>
/// 請注意,這句話必須加在設定檔的根節點,即<configuration>之下</li>
/// <li>您已經安裝了微軟的MSDE資料庫,如果您沒有安裝,可以在您的VS.NET安裝目錄下尋找到,如我安裝在E盤,則MSDE的安裝程式為E:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\Setup\msde\instmsde.exe,另外,請保證您的MSDE已經啟動,可以在命令列使用net start MSSQL$NetSDK 將其進行啟動</li>
/// <li>以下樣本僅是給出了MS SQL Server的案頭資料庫的樣本,在您有條件的情況下,您可以使用其它資料庫來做實驗,如果有任何問題,可以與我聯絡</li>
/// </ol>
/// <b>例一:執行查詢操作,以DataReader返回結果集</b><br/>
/// <code>
/// //請注意,此處的"DSN"為您在設定檔中所給的鍵名,而不是值;<br/>
/// try<br/>
/// {<br/>
///     Command command=new Command();<br/>
///     command.ConnectionString="server=(local)\NetSDK;database=Northwind;Trusted_Connection=yes";<br/>
///     command.CommandText="select * from orders where orderid=@orderid";<br/(orderid=@orderid";<br/)>
///      //下面的orders對應於SQL語句中的欄位名,同時,如果查詢語句為預存程序,此處請插入相應的入參;<br/>
///     command.Parameters["orderid"]=10249;<br/>
///      System.Data.IDataReader dr=command.ExecuteDataReader();<br/>
/// }<br/>
/// catch(JoyBaseDBException e)<br/>
/// {<br/>
///     //根據下面的樣本你可以自己製作自己的異常捕捉;<br/>
///     Console.WriteLine("錯誤資訊為:"+e.Message);<br/>
///     Console.WriteLine("錯誤可能原因為:"+e.Reason);<br/>
/// }<br/>
///
///if(dr.read())<br/>
///{<br/>
///   //讀取資料,按照您原來對DataReader的操作方法即可;<br/>
///    ...<br/>
/// }<br/>
/// else<br/>
/// {<br/>
///      //執行您的異常操作;<br/>
///      ...<br/>
/// <br/>
/// }<br/>
/// dr.Close();<br/>
/// </code>
/// <b>例二:執行查詢操作,並且返回DataSet對象:</b><br/>
/// <code>
/// Command command=new Command();<br/>
/// command.ConnectionSetName="DSN";<br/>
/// command.CommandText="select * from orders";<br/>
/// //下面我們分別返回幾個DataSet對象<br/>
/// //第一種是帶預設表名為DataSet為“Table”的DataSet<br/>
/// System.Data.DataSet ds1=command.ExecuteDataSet();<br/>
/// //然後再返回一個自訂表格名為“TableName”的對象<br/>
/// System.Data.DataSet ds2=command.ExecuteDataSet("TableName");<br/>
/// //再返回一個DataSet,我們將限制結果集的返回,假設從第12個紀錄開始,查詢50個紀錄出來<br/>
/// System.Data.DataSet ds3=command.ExecuteDataSet("TableName",12,50);<br/>
/// //同時,你如果樂意,還可以只返回一個DataTable<br/>
/// System.Data.DataTable table=command.Execute.DataTable();<br/>
/// //現在您可以執行資料繫結操作了,直接取它的defaultView即可<br/>
/// ...<br/>
/// </code>
/// <b>例三:執行分頁查詢,並且返回DataSet對象以及DataReader對象</b><br/>
/// <code>
/// Command command=new Command();<br/>
/// command.ConnectionSetName="DSN";<br/>
/// command.CommandText="select * from orders";<br/>
/// command.PageSize=30;<br/>
/// //此處您可以用變數替代,即可以達到動態分頁的效果<br/>
/// int CurrentPage=1;<br/>
/// System.Data.DataSet ds=command.ExecuteDataSet("ordersTable",CurrentPage);<br/>
/// //執行綁定操作,這樣DataList以及其它資料繫結控制項均支援分頁了(您還得做一些操作,如當前頁面數不要大於頁面總數也不要小於等於0等的判斷)<br/>
/// ...<br/>
/// //下面輸出DataReader<br/>
/// System.Data.IDataReader dr=command.ExecuteDataReader(CurrentPage);<br/>
/// int i=0;<br/>
/// while(dr.read())<br/>
/// {<br/>
///     //執行您需要的操作<br/>
///     ....<br/>
///
/// }<br/>
/// string showText="共有紀錄"+command.RecordSet+"條,共有"+command.PageCount+"頁,當前顯示第"+CurrentPage+"頁";<br/>
/// <br/>
/// </code>
/// </example>

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。