现在3层开发模式里面表示层, 业务逻辑层, 数据访问层
现在把数据访问层封装起来做为Class ,实现对数据进行访问的数据库操作类
下面是结构组件图
先从一个程序说起,再慢慢深入的理解数据操作类的实现
privatevoidConnectionDataBase()
{
//连接数据库
CommonInterface pObj_Comm=CommonFactory.CreateInstance(CommonData.sql);
stringstr_sql="select Guid,ReportID,ReportCompID,ReportFlag,QryConditionID from ReportMain";
DataTable dt=pObj_Comm.ExeForDtl(str_sql);
pObj_Comm.Close();
MessageBox.Show(dt.Rows.Count.ToString());
}
首先 CommonInterface pObj_Comm=CommonFactory.CreateInstance(CommonData.sql);
调用CommonFactory里面的静态方法 public static CommonInterface CreateInstance(CommonData CommonData_Parameter)
其中 CommonData 是枚举类型
///
/// 数据访问类型
///
public enum CommonData
{
///
/// 以SQL Server方式
///
sql = 1,
///
/// 以OLEDB方式
///
oledb = 2,
} ;
当
case 1:
return new CommonSql();
实例化CommonSql 返回的是CommonInterface 接口类型
CommonInterface 的定义如下:public interface CommonInterface
新建立一个类库 MySql.Pantheon.DAO
1 数据库连接
namespaceMySql.Pantheon.DAO
{
/**
///作用: 设置数据库默认连接字符串的配置类。
///作者:
///编写日期:
///
publicclassCommonDataConfig
{
/**
///数据库连接字符串
///
///使用此静态连接字符串的示例:
///
///using MySql.Pantheon.DAO;
/设定DAO所要使用的连接参数
///public static string ConnectionDefaultStrserver=192.168.0.220;database=pantheon;uid=pantheon;pwd=pantheon2002="server=server-test1;database=kmp50;uid=kmp;pwd=123123123";
///
///
publicstaticstringConnectionDefaultStr="server=JHTCHINA;database=LGBMISEXT;uid=sa;pwd=jhtchina";
}
}
2 确定访问方式的确定 SQL 方式 还是Oledb方式
usingSystem;
namespaceMySql.Pantheon.DAO
{
/**
///数据访问类型
///
publicenumCommonData
{
/**
///以SQL Server方式
///
sql=1,
/**
///以OLEDB方式
///
oledb=2,
};
/**
///作用: 数据库访问工厂类
///作者:
///编写日期:
///修改日期:加入代码示例程序
///
publicclassCommonFactory
{
/**
///是否单例模式连接
///
publicstaticboolIsSingleConnection=false;
/**
///winForm下的单例模式连接对象 修改:吴炜
///
publicstaticCommonInterface SingleConnection;
/**
///创建一个数据访问接口,默认返回SQL类型的数据访问接口
///
///数据访问类型
///CommonInterface接口
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql);
///
///
publicstaticCommonInterface CreateInstance(CommonData CommonData_Parameter)
{
switch((int) CommonData_Parameter)
{
case1:
returnnewCommonSql();
case2:
returnnewCommonOle();
default:
returnnewCommonSql();
}
}
/**
///创建一个数据访问接口
///
///数据访问类型
///数据库的连接串
///CommonInterface接口
///示例:
///
///using MySql.Pantheon.DAO;
///
///string pConnectionString="";
///
///pConnectionString="server=192.168.0.220;database=pantheon;uid=pantheon;pwd=pantheon2002";
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
///
publicstaticCommonInterface CreateInstance(CommonData CommonData_Parameter, String connstr)
{
switch((int) CommonData_Parameter)
{
case1:
returnnewCommonSql(connstr);
case2:
returnnewCommonOle(connstr);
default:
returnnewCommonSql(connstr);
}
}
}
}
3 对数据库通用操作的接口进行定义
usingSystem;
usingSystem.Data;
namespaceMySql.Pantheon.DAO
{
/**
///作用:对数据库通用操作的接口。
///作者:
///修改:
///
publicinterfaceCommonInterface
{
/**
///开始一个事务
///
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
/
/进行一些数据访问操作的代码
/
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///
///
voidBeginTrans();
/**
///提交一个事务
///
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
/
/进行一些数据访问操作的代码
/
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///
///
voidCommitTrans();
/**
///回滚一个事务
///
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///try
///{
/
/进行一些数据访问操作的代码
/
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///}
///catch(Exception ex)
///{
/
/自己的处理
/
///
/回滚此次数据操作
///pComm.RollbackTrans();
///
/关闭数据库连结
///pComm.Close();
///}
///
///
///
voidRollbackTrans();
/**
///执行SQL语句
///
///SQL语句
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
/进行一些数据访问操作的代码
///string pSql="";
///
///pSql="select * from YourTable";
///
/执行此次数据操作
///pComm.Execute(pSql);
///
/提交本次的事务
///pComm.CommitTrans();
/关闭数据库连结
///pComm.Close();
///
///
voidExecute(String sql);
/**
///执行SQL语句,填充到指定的DataTable中,返回DataSet
///
///SQL语句
///DataTable的名称
///DataSet数据集和
DataSet ExeForDst(String QueryString, String strTable);
/**
///执行一段SQL语句,返回DataSet结果集
///
///SQL语句
///DataSet结果集
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///string pSql="";
///DataSet pDst=new DataSet();
///
/进行一些数据访问操作的代码
///pSql="select * from YourTable";
///
/执行此次数据操作
///pDst=pComm.ExeForDst(pSql);
///
/提交本次的事务
///pComm.CommitTrans();
/关闭数据库连结
///pComm.Close();
///
///
DataSet ExeForDst(String QueryString);
/**
///执行SQL语句,返回DataTable
///
///SQL语句
///DataTable的名称
///DataTable的结果集
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///string pSql="";
///DataTable pDst=new DataTable();
///
/进行一些数据访问操作的代码
///pSql="select * from YourTable";
///
/执行此次数据操作
///pDst=pComm.ExeForDtl(pSql,"UserInfo");
///
/提交本次的事务
///pComm.CommitTrans();
/关闭数据库连结
///pComm.Close();
///
///
DataTable ExeForDtl(String QueryString, String TableName);
/**
///执行SQL语句,返回默认DataTable
///
///SQL语句
///DataTable结果集
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///string pSql="";
///DataTable pDst=new DataTable();
///
/进行一些数据访问操作的代码
///pSql="select * from YourTable";
///
/执行此次数据操作
///pDst=pComm.ExeForDtl(pSql);
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///
///
DataTable ExeForDtl(String QueryString);
/**
///执行SQL语句,返回IDataReader接口
///
///SQL语句
///IDataReader接口
IDataReader ExeForDtr(String QueryString);
/**
///返回IDbCommand接口
///
///IDbCommand接口
IDbCommand GetCommand();
/**
///关闭数据库连接
///
voidClose();
/**
///用来执行带有参数的SQL语句(不是存储过程)
///
///带有参数的SQL语句
///传递的参数列表
///同参数列表对应的参数值列表
voidExecuteNonQuery(stringSQLText,string[] Parameters,string[] ParametersValue);
/**
///执行存储过程
///
///存储过程的名称
///传递的参数列表
///同参数列表对应的参数值列表
///同参数列表对应的参数类型列表
voidExecuteSP(stringStoredProcedureName,string[] Parameters,string[] ParametersValue,string[] ParametersType);
/**
///执行存储过程,得到结果集DataSet
///
///存储过程名称
///参数名称与值的数组
///返回True或False
DataSet ExcuteSp(stringsqname,string[,] array);
/**
///
///
///
///
objectExecuteScalar(String QueryString);
/**
///
///
///
///
IDataAdapter getDataAdapter(stringsql);
/**
///
///
///
ICommandBuilder getCommandBuilder();
}
}
mssql的数据库连结方式的类 里面有定义实现方式
usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
namespaceMySql.Pantheon.DAO
{
/**
///作用:mssql的数据库连结方式的类
///作者:
///编写日期:
///修改1:
///1、将类声明的修饰符修改为“internal”,防止直接new此类
///2、增加对存储过程的封装
///
internalclassCommonSql : CommonInterface
{
privateSqlConnection conn=null;
privateSqlCommand cmd=null;
privateSqlTransaction trans=null;
privateString connstr=null;
/**
///构造方法
///
publicCommonSql()
{
connstr=CommonDataConfig.ConnectionDefaultStr;
Initial();
}
/**
///带有参数的构造方法
///
///数据库连接字符串
publicCommonSql(String ConnStr_Param)
{
connstr=ConnStr_Param;
Initial();
}
/**
///初始化
///
privatevoidInitial()
{
try
{
if(connstr==null)
{
}
this.conn=newSqlConnection(connstr);
this.cmd=newSqlCommand();
cmd.Connection=this.conn;
this.conn.Open();
}
catch(Exception e)
{
throwe;
}
}
/**
///开始一个事务
///
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
/
/进行一些数据访问操作的代码
/
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///
///
publicvoidBeginTrans()
{
trans=conn.BeginTransaction();
cmd.Transaction=trans;
}
/**
///提交一个事务
///
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
/
/进行一些数据访问操作的代码
/
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///
///
publicvoidCommitTrans()
{
trans.Commit();
}
/**
///回滚一个事务
///
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///try
///{
/
/进行一些数据访问操作的代码
/
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///}
///catch(Exception ex)
///{
/
/自己的处理
/
///
/回滚此次数据操作
///pComm.RollbackTrans();
///
/关闭数据库连结
///pComm.Close();
///}
///
///
///
publicvoidRollbackTrans()
{
trans.Rollback();
}
/**
///执行SQL语句
///
///SQL语句
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
/进行一些数据访问操作的代码
///string pSql="";
///
///pSql="select * from YourTable";
///
/执行此次数据操作
///pComm.Execute(pSql);
///
/提交本次的事务
///pComm.CommitTrans();
/关闭数据库连结
///pComm.Close();
///
///
publicvoidExecute(String sql)
{
try
{
cmd.CommandText=sql;
cmd.ExecuteNonQuery();
}
catch(Exception e)
{
throwe;
}
}
/**
///执行SQL语句,填充到指定的DataTable中,返回DataSet
///
///SQL语句
///DataTable的名称
///DataSet数据集和
publicDataSet ExeForDst(String QueryString, String strTable)
{
DataSet ds=newDataSet();
SqlDataAdapter ad=newSqlDataAdapter();
cmd.CommandText=QueryString;
修改1#region修改1
if(QueryString.Length>40000)
{
cmd.CommandTimeout=300;
}
#endregion
try
{
ad.SelectCommand=cmd;
ad.Fill(ds, strTable);
}
catch(Exception e)
{
throwe;
}
returnds;
}
/**
///执行一段SQL语句,返回DataSet结果集
///
///SQL语句
///DataSet结果集
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///string pSql="";
///DataSet pDst=new DataSet();
///
/进行一些数据访问操作的代码
///pSql="select * from YourTable";
///
/执行此次数据操作
///pDst=pComm.ExeForDst(pSql);
///
/提交本次的事务
///pComm.CommitTrans();
/关闭数据库连结
///pComm.Close();
///
///
publicDataSet ExeForDst(String QueryString)
{
DataSet ds=newDataSet();
SqlDataAdapter ad=newSqlDataAdapter();
cmd.CommandText=QueryString;
修改2#region修改2
if(QueryString.Length>40000)
{
cmd.CommandTimeout=300;
}
#endregion
try
{
ad.SelectCommand=cmd;
ad.Fill(ds);
}
catch(Exception e)
{
throwe;
}
returnds;
}
/**
///执行SQL语句,返回DataTable
///
///SQL语句
///DataTable的名称
///DataTable的结果集
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///string pSql="";
///DataTable pDst=new DataTable();
///
/进行一些数据访问操作的代码
///pSql="select * from YourTable";
///
/执行此次数据操作
///pDst=pComm.ExeForDtl(pSql,"UserInfo");
///
/提交本次的事务
///pComm.CommitTrans();
/关闭数据库连结
///pComm.Close();
///
///
publicDataTable ExeForDtl(String QueryString, String TableName)
{
try
{
DataSet ds;
DataTable dt;
ds=ExeForDst(QueryString, TableName);
dt=ds.Tables[TableName];
ds=null;
returndt;
}
catch
{
throw;
}
finally
{
}
}
/**
///执行SQL语句,返回默认DataTable
///
///SQL语句
///DataTable结果集
///示例:
///
///using MySql.Pantheon.DAO;
///
/创建使用默认数据连接的SQL数据访问接口
///CommonInterface pComm=CommonFactory.CreateInstance(CommonData.sql,pConnectionString);
///
/开始一个事务
///pComm.BeginTrans();
///
///string pSql="";
///DataTable pDst=new DataTable();
///
/进行一些数据访问操作的代码
///pSql="select * from YourTable";
///
/执行此次数据操作
///pDst=pComm.ExeForDtl(pSql);
///
/提交本次的事务
///pComm.CommitTrans();
///
/关闭数据库连结
///pComm.Close();
///
///
publicDataTable ExeForDtl(String QueryString)
{
try
{
DataSet ds;
DataTable dt;
ds=ExeForDst(QueryString);
dt=ds.Tables[0];
ds=null;
returndt;
}
catch(Exception ee)
{
thrownewException(ee.Message);
}
finally
{
}
}
/**
///执行SQL语句,返回IDataReader接口
///
///SQL语句
///IDataReader接口
publicIDataReader ExeForDtr(String QueryString)
{
try
{
cmd.CommandText=QueryString;
returncmd.ExecuteReader();
}
catch
{
throw;
}
}
/**
///返回IDbCommand接口
///
///IDbCommand接口
publicIDbCommand GetCommand()
{
try
{
returnthis.cmd;
}
catch(Exception e)
{
throwe;
}
}
/**
///返回IDbConnection接口
///
///IDbConnection接口
publicIDbConnection GetConn()
{
returnthis.conn;
}
/**
///关闭数据库连接
///
publicvoidClose()
{
if(conn.State.ToString().ToUpper()=="OPEN")
{
this.conn.Close();
}
}
/**
///用来执行带有参数的SQL语句(不是存储过程)
///
///带有参数的SQL语句
///传递的参数列表
///同参数列表对应的参数值列表
publicvoidExecuteNonQuery(stringSQLText,string[] Parameters,string[] ParametersValue)
{
try
{
this.cmd.CommandText=SQLText;
for(inti=0; i
{
this.cmd.Parameters.Add("@"+Parameters[i].ToString(), ParametersValue[i].ToString());
}
this.cmd.ExecuteNonQuery();
}
catch(Exception e)
{
throwe;
}
}
/**
///执行存储过程
///
///存储过程的名称
///传递的参数列表
///同参数列表对应的参数值列表
///同参数列表对应的参数类型列表
publicvoidExecuteSP(stringStoredProcedureName,string[] Parameters,string[] ParametersValue,string[] ParametersType)
{
try
{
this.cmd.CommandText=StoredProcedureName;
this.cmd.CommandType=CommandType.StoredProcedure;
for(inti=0; i
{
SqlParameter myParm=this.cmd.Parameters.Add("@"+Parameters[i], ParametersType[i].ToString());
myParm.Value=ParametersValue[i];
}
this.cmd.ExecuteNonQuery();
}
catch(Exception e)
{
throwe;
}
}
/**
///执行存储过程,得到结果集DataSet
///
///存储过程名称
///参数名称与值的数组
///返回True或False
publicDataSet ExcuteSp(stringsqname,string[,] array)
{
try
{
DataSet dset=newDataSet();
SqlDataAdapter dp=newSqlDataAdapter();
SqlCommand cmmd=newSqlCommand();
dp.SelectCommand=cmmd;
dp.SelectCommand.Connection=this.conn;
dp.SelectCommand.CommandType=CommandType.StoredProcedure;
dp.SelectCommand.CommandText=sqname;
for(inti=0; i<=array.GetUpperBound(0); i++)
{
if(array[i,0]!=null)
{
SqlParameter Parm=dp.SelectCommand.Parameters.Add(array[i,0].ToString(), SqlDbType.NVarChar);
Parm.Value=array[i,1].ToString();
}
}
dp.Fill(dset,"Default");
returndset;
}
catch(Exception e)
{
throwe;
}
}
publicobjectExecuteScalar(stringQueryString)
{
cmd.CommandText=QueryString;
try
{
returncmd.ExecuteScalar();
}
catch(Exception e)
{
throwe;
}
//return null;;
}
publicIDataAdapter getDataAdapter(stringsql)
{
returnnewSqlDataAdapter(sql,this.conn);
}
publicICommandBuilder getCommandBuilder()
{
returnnewSqlCmdBuilder();
}
}
}
OLEDB的数据库连结方式的类 实现对OLEDB的各种操作
usingSystem;
usingSystem.Data;
usingSystem.Data.OleDb;
namespaceMySql.Pantheon.DAO
{
/**
///作用:OLEDB的数据库连结方式的类
///作者:
///修改:
///编写日期:
///
internalclassCommonOle : CommonInterface
{
/**
///默认的构造方法
///
publicCommonOle()
{
connstr=CommonDataConfig.ConnectionDefaultStr;
Initial();
}
/**
///带有参数的构造方法
///
///数据库连接字符串
publicCommonOle(String Connstr_Param)
{
connstr=Connstr_Param;
Initial();
}
/**
///初始化
///
privatevoidInitial()
{
try
{
if(connstr==null)
{
//throw(new CommonException("连接字符串没有在web.config里设置"));
}
this.conn=newOleDbConnection(connstr);
this.cmd=newOleDbCommand();
cmd.Connection=this.conn;
this.conn.Open();
}
catch(Exception e)
{
throwe;
}
}
privateOleDbConnection conn=null;
privateOleDbCommand cmd=null;
privateOleDbTransaction trans=null;
privateString connstr=null;
/**
///开始一个事务
///
publicvoidBeginTrans()
{
trans=conn.BeginTransaction();
cmd.Transaction=trans;
}
/**
///提交一个事务
///
publicvoidCommitTrans()
{
trans.Commit();
}
/**
///回滚一个事务
///
publicvoidRollbackTrans()
{
trans.Rollback();
}
/**
///执行一条SQL语句
///
///
publicvoidExecute(String sql)
{
try
{
cmd.CommandText=sql;
cmd.ExecuteNonQuery();
}
catch(Exception e)
{
throwe;
}
}
/**
///执行SQL语句,填充到指定的DataTable中,返回DataSet
///
///SQL语句
///DataTable的名称
///DataSet数据集和
publicDataSet ExeForDst(String QueryString, String strTable)
{
DataSet ds=newDataSet();
OleDbDataAdapter ad=newOleDbDataAdapter();
cmd.CommandText=QueryString;
try
{
ad.SelectCommand=cmd;
ad.Fill(ds, strTable);
}
catch(Exception e)
{
throwe;
}
returnds;
}
/**
///执行一段SQL语句,返回DataSet结果集
///
///SQL语句
///DataSet结果集
publicDataSet ExeForDst(String QueryString)
{
DataSet ds=newDataSet();
OleDbDataAdapter ad=newOleDbDataAdapter();
cmd.CommandText=QueryString;
try
{
ad.SelectCommand=cmd;
ad.Fill(ds);
}
catch(Exception e)
{
throwe;
}
returnds;
}
/**
///执行SQL语句,返回DataTable
///
///SQL语句
///DataTable的名称
///DataTable的结果集
publicDataTable ExeForDtl(String QueryString, String TableName)
{
try
{
DataSet ds;
DataTable dt;
ds=ExeForDst(QueryString, TableName);
dt=ds.Tables[TableName];
ds=null;
returndt;
}
catch
{
throw;
}
finally
{
}
}
/**
///执行SQL语句,返回默认DataTable
///
///SQL语句
///DataTable结果集
publicDataTable ExeForDtl(String QueryString)
{
try
{
DataSet ds;
DataTable dt;
ds=ExeForDst(QueryString);
dt=ds.Tables[0];
ds=null;
returndt;
}
catch
{
throw;
}
finally
{
}
}
/**
///执行SQL语句,返回IDataReader接口
///
///SQL语句
///IDataReader接口
publicIDataReader ExeForDtr(String QueryString)
{
try
{
cmd.CommandText=QueryString;
returncmd.ExecuteReader();
}
catch
{
throw;
}
}
/**
///返回IDbCommand接口
///
///IDbCommand接口
publicIDbCommand GetCommand()
{
try
{
returnthis.cmd;
}
catch(Exception e)
{
throwe;
}
}
/**
///返回IDbConnection接口
///
///IDbConnection接口
publicIDbConnection GetConn()
{
returnthis.conn;
}
/**
///关闭一个数据连接
///
publicvoidClose()
{
if(conn.State.ToString().ToUpper()=="OPEN")
{
this.conn.Close();
}
}
/**
///用来执行带有参数的SQL语句(不是存储过程)
///
///带有参数的SQL语句
///传递的参数列表
///同参数列表对应的参数值列表
publicvoidExecuteNonQuery(stringSQLText,string[] Parameters,string[] ParametersValue)
{
this.cmd.CommandText=SQLText;
for(inti=0; i
{
this.cmd.Parameters.Add("@"+Parameters[i].ToString(), ParametersValue[i].ToString());
}
this.cmd.ExecuteNonQuery();
}
/**
///执行存储过程
///
///存储过程的名称
///传递的参数列表
///同参数列表对应的参数值列表
///同参数列表对应的参数类型列表
publicvoidExecuteSP(stringStoredProcedureName,string[] Parameters,string[] ParametersValue,string[] ParametersType)
{
try
{
this.cmd.CommandText=StoredProcedureName;
this.cmd.CommandType=CommandType.StoredProcedure;
for(inti=0; i
{
OleDbParameter myParm=this.cmd.Parameters.Add("@"+Parameters[i], Type.GetType(ParametersType[i].ToString()));
myParm.Value=ParametersValue[i];
}
this.cmd.ExecuteNonQuery();
}
catch(Exception e)
{
throwe;
}
}
/**
///执行存储过程,得到结果集DataSet
///
///存储过程名称
///参数名称与值的数组
///返回True或False
publicDataSet ExcuteSp(stringsqname,string[,] array)
{
try
{
DataSet dset=newDataSet();
//OleDbDataAdapter dp=new SqlDataAdapter();
//SqlCommand cmmd = new SqlCommand();
OleDbDataAdapter odp=newOleDbDataAdapter();
OleDbCommand ocmd=newOleDbCommand();
odp.SelectCommand=ocmd;
odp.SelectCommand.Connection=this.conn;
odp.SelectCommand.CommandType=CommandType.StoredProcedure;
odp.SelectCommand.CommandText=sqname;
for(inti=0; i<=array.GetUpperBound(0); i++)
{
if(array[i,0]!=null)
{
//SqlParameter Parm = dp.SelectCommand.Parameters.Add( array[i,0].ToString(), SqlDbType.NVarChar);
OleDbParameter Parm=odp.SelectCommand.Parameters.Add(array[i,0].ToString(), SqlDbType.NVarChar);
Parm.Value=array[i,1].ToString();
}
}
odp.Fill(dset,"Default");
returndset;
}
catch(Exception e)
{
throwe;
}
}
publicobjectExecuteScalar(stringQueryString)
{
cmd.CommandText=QueryString;
try
{
returncmd.ExecuteScalar();
}
catch(Exception e)
{
throwe;
}
}
publicIDataAdapter getDataAdapter(stringsql)
{
returnnewOleDbDataAdapter(sql,this.conn);
}
publicICommandBuilder getCommandBuilder()
{
returnnewOleDbCmdBuilder();
}
}
}
对ado.net中各个数据库操作类型的CommandBuilder加一适配
usingSystem.Data;
usingSystem.Data.OleDb;
usingSystem.Data.SqlClient;
namespaceMySql.Pantheon.DAO
{
/**
///
///对ado.net中各个数据库操作类型的CommandBuilder加一适配
///
///
publicinterfaceICommandBuilder
{
/**
///设置数据适配器
///
///
voidSetDataAdapter(IDataAdapter da);
}
/**
///sql的命令建造者适配对象
///
publicclassSqlCmdBuilder : ICommandBuilder
{
/**
///设置数据适配器
///
///sql数据适配器
publicvoidSetDataAdapter(IDataAdapter da)
{
SqlCommandBuilder cb=newSqlCommandBuilder((SqlDataAdapter) da);
}
}
/**
///oledb的命令建造者适配对象
///
publicclassOleDbCmdBuilder : ICommandBuilder
{
/**
///设置数据适配器
///
///oledb数据适配器
publicvoidSetDataAdapter(IDataAdapter da)
{
OleDbCommandBuilder cb=newOleDbCommandBuilder((OleDbDataAdapter) da);
}
}
}
具体的调用操作Class 将在下篇文章中做出分析