黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Oracle,SqlServer,Access數(shù)據(jù)庫(kù)通用訪問(wèn)類設(shè)計(jì)

系統(tǒng) 2222 0
本文轉(zhuǎn)自: http://blog.csdn.net/mydriverc/archive/2007/06/14/1652128.aspx

本項(xiàng)目除用到"實(shí)時(shí)數(shù)據(jù)庫(kù)"外,?還需要用Oracle數(shù)據(jù)庫(kù)存儲(chǔ)大量的配置信息和生成的數(shù)據(jù),而且對(duì) Oracle的讀取相當(dāng)?shù)念l繁,在項(xiàng)目開(kāi)始之處,數(shù)據(jù)訪問(wèn)就是一個(gè)很令人煩惱的問(wèn)題,僅僅數(shù)據(jù)訪問(wèn)類就修改了好多版本,直到目前正在使用的這個(gè)版本.同時(shí)為了應(yīng)付開(kāi)發(fā)過(guò)程中不時(shí)需要讀取SqlServer和Access數(shù)據(jù)庫(kù),所以就寫成三種數(shù)據(jù)源的通用訪問(wèn)類,雖然有點(diǎn)四不象,不過(guò)挺省事的,嘻嘻!

此模塊分為兩個(gè)CS文件:
DataFactory.cs

using ?System;?
using ?System.Data;?
using ?System.Data.Common;?
using ?System.Data.SqlClient;?
using ?System.Data.OleDb;?
using ?System.Data.OracleClient;?
using ?System.Collections;

namespace ?REAP.Utility
{
????
public ? enum ?DataBaseType
????
{
????????Access,
????????SQLServer,
????????Oracle
????}


????
/// ? <summary>
????
/// ?DataFactory??的摘要說(shuō)明。
????
/// ? </summary>

???? class ?DataFactory
????
{
????????
public ?DataFactory()
????????
{?}

????????
public ? static ?IDbConnection?CreateConnection( string ?ConnectionString,?DataBaseType?dbtype)
????????
{
????????????IDbConnection?cnn;

????????????
switch ?(dbtype)
????????????
{
????????????????
case ?DataBaseType.Access:
????????????????????cnn?
= ? new ?OleDbConnection(ConnectionString);
????????????????????
break ;

????????????????
case ?DataBaseType.SQLServer:
????????????????????cnn?
= ? new ?SqlConnection(ConnectionString);
????????????????????
break ;

????????????????
case ?DataBaseType.Oracle:
????????????????????cnn?
= ? new ?OracleConnection(ConnectionString);
????????????????????
break ;

????????????????
default :
????????????????????cnn?
= ? new ?SqlConnection(ConnectionString);
????????????????????
break ;
????????????}

????????????
return ?cnn;
????????}


????????
public ? static ?IDbCommand?CreateCommand(DataBaseType?dbtype,?IDbConnection?cnn)
????????
{
????????????IDbCommand?cmd;
????????????
switch ?(dbtype)
????????????
{
????????????????
case ?DataBaseType.Access:
????????????????????cmd?
= ? new ?OleDbCommand( "" ,?(OleDbConnection)cnn);
????????????????????
break ;

????????????????
case ?DataBaseType.SQLServer:
????????????????????cmd?
= ? new ?SqlCommand( "" ,?(SqlConnection)cnn);
????????????????????
break ;

????????????????
case ?DataBaseType.Oracle:
????????????????????cmd?
= ? new ?OracleCommand( "" ,?(OracleConnection)cnn);
????????????????????
break ;
????????????????
default :
????????????????????cmd?
= ? new ?SqlCommand( "" ,?(SqlConnection)cnn);
????????????????????
break ;
????????????}


????????????
return ?cmd;
????????}


????????
public ? static ?IDbCommand?CreateCommand( string ?CommandText,?DataBaseType?dbtype,?IDbConnection?cnn)
????????
{
????????????IDbCommand?cmd;
????????????
switch ?(dbtype)
????????????
{
????????????????
case ?DataBaseType.Access:
????????????????????cmd?
= ? new ?OleDbCommand(CommandText,?(OleDbConnection)cnn);
????????????????????
break ;

????????????????
case ?DataBaseType.SQLServer:
????????????????????cmd?
= ? new ?SqlCommand(CommandText,?(SqlConnection)cnn);
????????????????????
break ;

????????????????
case ?DataBaseType.Oracle:
????????????????????cmd?
= ? new ?OracleCommand(CommandText,?(OracleConnection)cnn);
????????????????????
break ;
????????????????
default :
????????????????????cmd?
= ? new ?SqlCommand(CommandText,?(SqlConnection)cnn);
????????????????????
break ;
????????????}


????????????
return ?cmd;
????????}


????????
public ? static ?DbDataAdapter?CreateAdapter(IDbCommand?cmd,?DataBaseType?dbtype)
????????
{
????????????DbDataAdapter?da;
????????????
switch ?(dbtype)
????????????
{
????????????????
case ?DataBaseType.Access:
????????????????????da?
= ? new ?OleDbDataAdapter((OleDbCommand)cmd);
????????????????????
break ;

????????????????
case ?DataBaseType.SQLServer:
????????????????????da?
= ? new ?SqlDataAdapter((SqlCommand)cmd);
????????????????????
break ;

????????????????
case ?DataBaseType.Oracle:
????????????????????da?
= ? new ?OracleDataAdapter((OracleCommand)cmd);
????????????????????
break ;

????????????????
default :
????????????????????da?
= ? new ?SqlDataAdapter((SqlCommand)cmd);
????????????????????
break ;
????????????}


????????????
return ?da;
????????}


????????
public ? static ?IDataParameter?CreateParameter(DataBaseType?dbtype)
????????
{
????????????IDataParameter?param?
= ? null ;
????????????
switch ?(dbtype)
????????????
{
????????????????
case ?DataBaseType.Access:
????????????????????param?
= ? new ?OleDbParameter();
????????????????????
break ;

????????????????
case ?DataBaseType.SQLServer:
????????????????????param?
= ? new ?SqlParameter();
????????????????????
break ;

????????????????
case ?DataBaseType.Oracle:
????????????????????param?
= ? new ?OracleParameter();
????????????????????
break ;

????????????????
default :
????????????????????param?
= ? new ?SqlParameter();
????????????????????
break ;
????????????}


????????????
return ?param;
????????}

????}

}


DBAccess.cs

using ?System;?
using ?System.Data;?
using ?System.Data.Common;?
using ?System.Data.SqlClient;?
using ?System.Data.OleDb;?
using ?System.Data.OracleClient;
using ?System.Configuration;

namespace ?REAP.Utility
{
????
/// ? <summary>
????
/// ?由于可能會(huì)在多種數(shù)據(jù)源,如ORACLE,SQLSERVER,ACCESS等之間進(jìn)行切換,
????
/// ?所以將數(shù)據(jù)源連接字符串和數(shù)據(jù)源類型定義為類屬性,在默認(rèn)情況下有配置文件定義;
????
/// ?當(dāng)需要在兩種不同的數(shù)據(jù)源之間進(jìn)行切換時(shí),可以重新為屬性賦值。
????
/// ? </summary>

???? public ? class ?DBAccess
????
{
????????
屬性設(shè)置

????????
DataSet生成操作

????????
SQL執(zhí)行操作

????????
DataReader操作

????????
// 其他功能,故意省略
????}

}

舉例如下:

默認(rèn)情況下是訪問(wèn)Oracle數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)連接字符串已經(jīng)在Config文件中定義,所以不需要再設(shè)置其ConnectionString和DataSourceType屬性,此時(shí)返回一個(gè)DataSet的代碼如下:

DBAccess?db? = ? new ?DBAccess();
// 同時(shí)執(zhí)行兩條查詢語(yǔ)句
string ?strSql? = ? " SELECT?*?FROM?TABLE1;SELECT?*?FROM?TABLE2 " ;
DataSet?ds?
= ?db.GetDataSet(strSql);

但是如果在程序中需要臨時(shí)訪問(wèn)SqlServer數(shù)據(jù)庫(kù),則需要設(shè)置屬性,此時(shí)代碼如下:

DBAccess?db? = ? new ?DBAccess();
db.ConnectionString?
= ? " server=localhost;UID=sa;PWD=123456;DATABASE=Money;connect?timeout=120 " ;
db.DataSourceType?
= ?DataBaseType.SQLServer;

(完)


Oracle,SqlServer,Access數(shù)據(jù)庫(kù)通用訪問(wèn)類設(shè)計(jì)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論