|
|
Posted on
2004-12-07 20:37
冷风.net
阅读( 557)
评论()
收藏
举报
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;
}
}
}
|