一個數據庫操作類的實例(二.Provider類)
2024-07-21 02:23:46
供稿:網友
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。using system;
namespace com.joybase.db
{
/// <summary>
/// 數據庫連接提供類
/// </summary>
public class provider
{
//一個靜態的連接接口;
private static system.data.idbconnection conn;
/// <summary>
/// 構造方法,設為私有類型,是防止外部無效的引用;
/// </summary>
protected provider()
{
//
// todo: add constructor logic here
//
system.data.idbcommand x=new system.data.oledb.oledbcommand();
}
// /// <summary>
// /// 數據庫連接類型,即判斷是system.data.sqlclient類型或者是system.data.oledb類型的。
// /// </summary>
// private static dbtype databasetype
// {
// get
// {
// //從配置文件當中讀取數據庫類型字符串
// string m_dbtype=system.configuration.configurationsettings.appsettings["database.type"];
// //如果未設置默認為system.data.sqlclient類型的連接
// if(m_dbtype==null)
// {
// return dbtype.sqlclient;
// }
// else
// {
// //如果為空或者為mssqlserver2000,則使用system.data.sqlclient類型的連接
// if(m_dbtype.trim()==""||m_dbtype.trim().toupper()=="mssqlserver2000"||m_dbtype.trim().toupper()=="mssqlserver7")
// {
// return dbtype.sqlclient;
// }
// //其它則返回system.data.oledb類型的連接
// else
// {
// if(m_dbtype.trim().toupper()=="oledb")
// {
// return dbtype.oledb;
// }
// }
//
// }
// return dbtype.oledb;
//
// }
//
//
// }
/// <summary>
/// 重載getconn(string)方法,此時連接字符串的標簽名將為“database.connectionstring”
/// <seealso cref="getconn(string) "/>
/// </summary>
/// <returns>返回一個連接</returns>
public static system.data.idbconnection getconn()
{
return provider.getconn("");
}
/// <summary>
/// 獲得數據庫連接接口
/// </summary>
/// <param name="p_connstringsetname">一個在config文件中設置連接字符串的標簽名</param>
/// <returns></returns>
public static system.data.idbconnection getconn(string p_connstringsetname)
{
// if(conn==null)
// {
string connstr="";
if(p_connstringsetname.trim()=="")
{
connstr=system.configuration.configurationsettings.appsettings["database.connectionstring"];
}
else
{
connstr=system.configuration.configurationsettings.appsettings[p_connstringsetname];
}
if(connstr==null||connstr=="")
{
throw new exception("not find connection string!");
}
dbtype m_dbtype;//=provider.databasetype;
/*
* 注釋:我們對前面的編碼進行了部分的修改,鑒于system.data.sqlclient的連接
* 字符串當中不可能出現"provider"字樣,所以我們根據是否有provider字樣來判斷
* 該連接是基于system.data.sqlclient的或者system.data.oledb的。
* 參考資料:
* 可以將 connectionstring 屬性設置為單個單元。(不能為 sqlconnection 對象指定 provider 屬性。)
* –或–
*
* 可以設置單個屬性(datasource、database、username 等等)。如果設置單個屬性,則將為您生成連接字符串。
* 注意 在連接字符串中存儲用戶名和密碼有安全性設置的意味。有關詳細信息,請參閱introduction to ado.net connection design tools。
*
*/
if(connstr.tolower().indexof("provider")==-1) m_dbtype=dbtype.sqlclient;
else m_dbtype=dbtype.oledb;
try
{
if(m_dbtype==dbtype.sqlclient)
{
conn=new system.data.sqlclient.sqlconnection(connstr);
}
else
{
conn=new system.data.oledb.oledbconnection(connstr);
}
}
catch
{
throw new exception("error to connect db!");
}
// }
//if(conn.state!=system.data.connectionstate.closed) conn.close();
return conn;
}
}
/// <summary>
/// 枚舉類型,即一個數據庫連接類型的枚舉
/// </summary>
enum dbtype
{
sqlclient=0,
oledb=1
}
}