Oracle,SqlServer,Access数据库通用访问类设计 ---这个也太简单了

 

本项目除用到"实时数据库"外, 还需要用Oracle数据库存储大量的配置信息和生成的数据,而且对Oracle的读取相当的频繁,在项目开始之处,数据访问就是一个很令人烦恼的问题,仅仅数据访问类就修改了好多版本,直到目前正在使用的这个版本.同时为了应付开发过程中不时需要读取SqlServer和Access数据库,所以就写成三种数据源的通用访问类,虽然有点四不象,不过挺省事的,嘻嘻!

此模块分为两个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  的摘要说明。
    
/// </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>
    
/// 由于可能会在多种数据源,如ORACLE,SQLSERVER,ACCESS等之间进行切换,
    
/// 所以将数据源连接字符串和数据源类型定义为类属性,在默认情况下有配置文件定义;
    
/// 当需要在两种不同的数据源之间进行切换时,可以重新为属性赋值。
    
/// </summary>

    public class DBAccess
    
{
        
属性设置

        
DataSet生成操作

        
SQL执行操作

        
DataReader操作

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

}

举例如下:

默认情况下是访问Oracle数据库,数据库连接字符串已经在Config文件中定义,所以不需要再设置其ConnectionString和DataSourceType属性,此时返回一个DataSet的代码如下:

DBAccess db  =   new  DBAccess();
// 同时执行两条查询语句
string  strSql  =   " SELECT * FROM TABLE1;SELECT * FROM TABLE2 " ;
DataSet ds 
=  db.GetDataSet(strSql);

但是如果在程序中需要临时访问SqlServer数据库,则需要设置属性,此时代码如下:

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

(完)



 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值