冷风.NET

    ---默默無聞
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

連接任何數據庫的類(一)

Posted on 2004-12-07 20:37  冷风.net  阅读(557)  评论(0)    收藏  举报

using System;
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data.Common;

namespace DBSpaceName
{

    
public class DataFactory
    
{
        
public DataFactory(){}

        
/// <summary>
        
/// 創建一個IDbConnection對象
        
/// </summary>
        
/// <param name="connectionString">ConnectionString值</param>
        
/// <param name="dbType">數據庫類型</param>
        
/// <returns>IDbConnection對象</returns>

        public static IDbConnection CreateConnection(string connectionString, DataBaseType dbType)
        
{
            IDbConnection cnn;
            
switch(dbType)
            
{
                
case DataBaseType.Access:
                    cnn 
= new OleDbConnection(connectionString);
                    
break;
                
case DataBaseType.Sql:
                    cnn 
= new SqlConnection(connectionString);
                    
break;
                
default:
                    cnn 
= new SqlConnection(connectionString);
                    
break;
            }

            
return cnn;
        }


        
/// <summary>
        
/// 創建一個IDbCommand對象
        
/// </summary>
        
/// <param name="commandText">CommandText值</param>
        
/// <param name="dbType">數據庫類型</param>
        
/// <param name="cnn">IDbConnection對象</param>
        
/// <returns>IDbCommand對象</returns>

        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.Sql:
                    cmd 
= new SqlCommand(commandText,(SqlConnection)cnn);
                    
break;
                
default:
                    cmd 
= new SqlCommand(commandText,(SqlConnection)cnn);
                    
break;
            }

            
return cmd;
        }


        
/// <summary>
        
/// 創建一個IDbCommand對象
        
/// </summary>
        
/// <param name="dbType">數據庫類型</param>
        
/// <param name="cnn">IDbConnection對象</param>
        
/// <returns>IDbCommand對象</returns>

        public static IDbCommand CreateCommand(DataBaseType dbType, IDbConnection cnn)
        
{
            IDbCommand cmd;
            
switch(dbType)
            
{
                
case DataBaseType.Access:
                    cmd 
= new OleDbCommand();
                    cmd.Connection 
= (OleDbConnection)cnn;
                    
break;
                
case DataBaseType.Sql:
                    cmd 
= new SqlCommand();
                    cmd.Connection 
= (SqlConnection)cnn;
                    
break;
                
default:
                    cmd 
= new SqlCommand();
                    cmd.Connection 
= (SqlConnection)cnn;
                    
break;
            }

            
return cmd;
        }


        
/// <summary>
        
/// 給Command中的存儲過存或Sql語句中的參數賦值
        
/// </summary>
        
/// <param name="cmd">IDbCommand對象</param>
        
/// <param name="parameters">參數數組</param>
        
/// <returns>已經賦值的IDbCommand對象</returns>

        public static IDbCommand CreateCommand(IDbCommand cmd, IDataParameter[] parameters)
        
{
            
foreach(IDataParameter parameter in parameters)
            
{
                
if(parameter != null)
                
{
                    
if((parameter.Direction==ParameterDirection.InputOutput || parameter.Direction==ParameterDirection.Input)
                        
&& (parameter.Value==null))
                    
{
                        parameter.Value 
= DBNull.Value;
                    }

                    cmd.Parameters.Add(parameter);
                }

            }

            
return cmd;
        }

        
/// <summary>
        
/// 給Command中的存儲過存或Sql語句中的參數賦值
        
/// </summary>
        
/// <param name="cmd">IDbCommand</param>
        
/// <param name="parameter">參數</param>
        
/// <returns>已經賦值的IDbCommand對象</returns>

        public static IDbCommand CreateCommand(IDbCommand cmd, IDataParameter parameter)
        
{
            
if(parameter != null)
            
{
                
if((parameter.Direction==ParameterDirection.InputOutput || parameter.Direction==ParameterDirection.Input)
                    
&& (parameter.Value==null))
                
{
                    parameter.Value 
= DBNull.Value;
                }

                cmd.Parameters.Add(parameter);
            }

            
return cmd;
        }


        
/// <summary>
        
/// 建立一個IDataParameter參數
        
/// </summary>
        
/// <param name="parameterName">參數名</param>
        
/// <param name="parameterValue">參數值</param>
        
/// <param name="dbType">數據庫類型</param>
        
/// <returns>IDataParameter對象</returns>

        public static IDataParameter CreateParameter(string parameterName, object parameterValue,ParameterDirection direction,DataBaseType dbType)
        
{
            IDataParameter parameter;
            
switch(dbType)
            
{
                
case DataBaseType.Access:
                    parameter 
= new OleDbParameter("@"+parameterName,parameterValue);
                    
break;
                
case DataBaseType.Sql:
                    parameter 
= new SqlParameter("@"+parameterName,parameterValue);
                    
break;
                
default:
                    parameter 
= new SqlParameter("@"+parameterName,parameterValue);
                    
break;
            }

            parameter.Direction 
= direction;
            
return parameter;
        }


        
/// <summary>
        
/// 創建一個DbDataAdapter對象
        
/// </summary>
        
/// <param name="cmd">IDbCommand對象</param>
        
/// <param name="dbType">數據庫類型</param>
        
/// <returns>DbDataAdapter對象</returns>
        
/// 

        public static DbDataAdapter CreateAdapter(IDbCommand cmd, DataBaseType dbType)
        
{
            DbDataAdapter da;
            
switch(dbType)
            
{
                
case DataBaseType.Access:
                    da 
= new OleDbDataAdapter((OleDbCommand)cmd);
                    
break;
                
case DataBaseType.Sql:
                    da 
= new SqlDataAdapter((SqlCommand)cmd);
                    
break;
                
default:
                    da 
= new SqlDataAdapter((SqlCommand)cmd);
                    
break;
            }

            
return da;
        }



    }

}