需求千变万化,我们的应用软件要满足支持多个数据库访问,应对以前的代码封闭不能改动。
一 定义数据库基础访问接口
1 /// <summary> 2 /// 数据库访问适配器 3 /// </summary> 4 public interface IDBAccessProvider 5 { 6 7 /// <summary> 8 /// 获取连接状态 9 /// </summary> 10 ConnectionState ConnState { get; } 11 /// <summary> 12 /// 是否存在一个已经开始的事务 13 /// </summary> 14 bool IsExistTrans { get; } 15 16 /// <summary> 17 /// 打开连接 18 /// </summary> 19 void OpenConn(); 20 /// <summary> 21 /// 关闭连接 22 /// </summary> 23 void CloseConn(); 24 25 /// <summary> 26 /// 开始事务 27 /// </summary> 28 void BeginTrans(); 29 /// <summary> 30 /// 提交事务 31 /// </summary> 32 void CommitTrans(); 33 /// <summary> 34 /// 回滚事务 35 /// </summary> 36 void RollbackTrans(); 37 38 /// <summary> 39 /// 创建一个命令参数 40 /// </summary> 41 /// <param name="name">参数名称</param> 42 /// <param name="value">参数值</param> 43 /// <param name="dbType">参数类型</param> 44 /// <param name="direction">参数方向</param> 45 /// <returns>参数对象</returns> 46 IDbDataParameter CreateParameter(string name, object value, DbType dbType, ParameterDirection direction); 47 /// <summary> 48 /// 创建一个命令参数 49 /// </summary> 50 /// <param name="name">参数名称</param> 51 /// <param name="value">参数值</param> 52 /// <param name="dbType">参数类型</param> 53 /// <returns>参数对象</returns> 54 IDbDataParameter CreateParameter(string name, object value, DbType dbType); 55 /// <summary> 56 /// 创建一个命令参数 57 /// </summary> 58 /// <param name="name">参数名称</param> 59 /// <param name="value">参数值</param> 60 /// <returns>参数对象</returns> 61 IDbDataParameter CreateParameter(string name, object value); 62 63 /// <summary> 64 /// 执行一条Sql命令 65 /// </summary> 66 /// <param name="sqlText">sql命令文本</param> 67 /// <param name="parames">参数表</param> 68 /// <param name="commandType">命令类型</param> 69 void ExecuteNonQuery(string sqlText, List<IDbDataParameter> parames, CommandType commandType); 70 /// <summary> 71 /// 执行一条Sql命令 72 /// </summary> 73 /// <param name="sqlText">sql命令文本</param> 74 /// <param name="parames">参数表</param> 75 void ExecuteNonQuery(string sqlText, List<IDbDataParameter> parames); 76 /// <summary> 77 /// 执行一条Sql命令 78 /// </summary> 79 /// <param name="sqlText">sql命令文本</param> 80 void ExecuteNonQuery(string sqlText); 81 82 /// <summary> 83 /// 执行一条查询Sql命令,返回一个DataReader 84 /// </summary> 85 /// <param name="sqlText">sql命令文本</param> 86 /// <param name="parames">参数表</param> 87 /// <param name="commandType">命令类型</param> 88 /// <param name="behavior"></param> 89 /// <returns></returns> 90 IDataReader ExecuteReader(string sqlText, List<IDbDataParameter> parames, CommandType commandType, CommandBehavior behavior); 91 /// <summary> 92 /// 执行一条查询Sql命令,返回一个DataReader 93 /// </summary> 94 /// <param name="sqlText">sql命令文本</param> 95 /// <param name="parames">参数表</param> 96 /// <param name="commandType">命令类型</param> 97 /// <returns></returns> 98 IDataReader ExecuteReader(string sqlText, List<IDbDataParameter> parames, CommandType commandType); 99 /// <summary> 100 /// 执行一条查询Sql命令,返回一个DataReader 101 /// </summary> 102 /// <param name="sqlText">sql命令文本</param> 103 /// <param name="parames">参数表</param> 104 /// <returns></returns> 105 IDataReader ExecuteReader(string sqlText, List<IDbDataParameter> parames); 106 /// <summary> 107 /// 执行一条查询Sql命令,返回一个DataReader 108 /// </summary> 109 /// <param name="sqlText">sql命令文本</param> 110 /// <returns></returns> 111 IDataReader ExecuteReader(string sqlText); 112 113 /// <summary> 114 /// 执行一条查询Sql命令,返回一个结果集的第一行第一列的值 115 /// </summary> 116 /// <param name="sqlText">sql命令文本</param> 117 /// <param name="parames">参数表</param> 118 /// <param name="commandType">命令类型</param> 119 /// <returns></returns> 120 object ExecuteScalar(string sqlText, List<IDbDataParameter> parames, CommandType commandType); 121 /// <summary> 122 /// 执行一条查询Sql命令,返回一个结果集的第一行第一列的值 123 /// </summary> 124 /// <param name="sqlText">sql命令文本</param> 125 /// <param name="parames">参数表</param> 126 /// <returns></returns> 127 object ExecuteScalar(string sqlText, List<IDbDataParameter> parames); 128 /// <summary> 129 /// 执行一条查询Sql命令,返回一个结果集的第一行第一列的值 130 /// </summary> 131 /// <param name="sqlText">sql命令文本</param> 132 /// <returns></returns> 133 object ExecuteScalar(string sqlText); 134 }