我的数据访问函数库的源代码(一)—— 共用部分

/* 2008 4 25 更新 */

我的数据访问函数库
的源码。整个类有1400多行,原先就是分开来写的,现在更新后还是分开来发一下吧。

第一部分:内部成员,初始化设置等。

 

  1我的数据访问函数库的源代码(一)—— 共用部分using System;
  2我的数据访问函数库的源代码(一)—— 共用部分using System.Data;
  3我的数据访问函数库的源代码(一)—— 共用部分using System.Data.SqlClient;
  4我的数据访问函数库的源代码(一)—— 共用部分using HBS.DataStruct;
  5我的数据访问函数库的源代码(一)—— 共用部分using HBS.Form;
  6我的数据访问函数库的源代码(一)—— 共用部分
  7我的数据访问函数库的源代码(一)—— 共用部分//using System.Security.Principal;
  8我的数据访问函数库的源代码(一)—— 共用部分
  9我的数据访问函数库的源代码(一)—— 共用部分namespace HBS
 10我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分{
 11我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分    /**//// <summary>
 12我的数据访问函数库的源代码(一)—— 共用部分    /// 存储过程的参数的类型,在输出型的参数里使用。
 13我的数据访问函数库的源代码(一)—— 共用部分    /// </summary>

 14我的数据访问函数库的源代码(一)—— 共用部分    public enum ParameterKind
 15我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分    我的数据访问函数库的源代码(一)—— 共用部分{
 16我的数据访问函数库的源代码(一)—— 共用部分        Int,Double,Decimal,NVarChar,Bit
 17我的数据访问函数库的源代码(一)—— 共用部分    }

 18我的数据访问函数库的源代码(一)—— 共用部分
 19我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分    /**//// <summary>
 20我的数据访问函数库的源代码(一)—— 共用部分    /// 这是一个通用的数据访问层接口。对ADO.NET的封装。功能类似于 SQLHelper ,但是需要实例化。
 21我的数据访问函数库的源代码(一)—— 共用部分    /// </summary>

 22我的数据访问函数库的源代码(一)—— 共用部分    public sealed class DataAccessLayer
 23我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分    我的数据访问函数库的源代码(一)—— 共用部分{
 24我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        属性#region 属性
 25我的数据访问函数库的源代码(一)—— 共用部分        private string errorMsg;                        //出错信息
 26我的数据访问函数库的源代码(一)—— 共用部分        private static bool  isShowErrorSQL;            //是否显示出错的查询语句(包括存储过程名程)
 27我的数据访问函数库的源代码(一)—— 共用部分        private int executeRowCount;                    //获取执行SQL查询语句后影响的行数
 28我的数据访问函数库的源代码(一)—— 共用部分        private SqlCommand cm ;                            //建立Command对象
 29我的数据访问函数库的源代码(一)—— 共用部分        private SqlTransaction sqlTrans ;                //用于事务处理
 30我的数据访问函数库的源代码(一)—— 共用部分        public bool isUseTrans;                            //是否启用了 .net 的事务处理
 31我的数据访问函数库的源代码(一)—— 共用部分
 32我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
 33我的数据访问函数库的源代码(一)—— 共用部分        /// 读取出错信息,用于判断是否出现异常
 34我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>

 35我的数据访问函数库的源代码(一)—— 共用部分        public string ErrorMsg            
 36我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
 37我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            get我的数据访问函数库的源代码(一)—— 共用部分{return errorMsg;}
 38我的数据访问函数库的源代码(一)—— 共用部分        }

 39我的数据访问函数库的源代码(一)—— 共用部分
 40我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
 41我的数据访问函数库的源代码(一)—— 共用部分        /// 修改连接字符串,在同时访问两个或两个以上的数据库的时候使用。限于同一类型的数据库,这里是SQL Server
 42我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>

 43我的数据访问函数库的源代码(一)—— 共用部分        public string cnString            
 44我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
 45我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            set我的数据访问函数库的源代码(一)—— 共用部分{cm.Connection.ConnectionString = value;}
 46我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            get我的数据访问函数库的源代码(一)—— 共用部分{return cm.Connection.ConnectionString;}
 47我的数据访问函数库的源代码(一)—— 共用部分        }

 48我的数据访问函数库的源代码(一)—— 共用部分
 49我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
 50我的数据访问函数库的源代码(一)—— 共用部分        /// 获取执行SQL查询语句后影响的行数
 51我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>

 52我的数据访问函数库的源代码(一)—— 共用部分        public int ExecuteRowCount            
 53我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
 54我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            get我的数据访问函数库的源代码(一)—— 共用部分{return executeRowCount;}
 55我的数据访问函数库的源代码(一)—— 共用部分        }

 56我的数据访问函数库的源代码(一)—— 共用部分
 57我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
 58我的数据访问函数库的源代码(一)—— 共用部分        /// 释放资源
 59我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>

 60我的数据访问函数库的源代码(一)—— 共用部分        public void Dispose()
 61我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
 62我的数据访问函数库的源代码(一)—— 共用部分            if (isUseTrans)
 63我的数据访问函数库的源代码(一)—— 共用部分                sqlTrans.Dispose();
 64我的数据访问函数库的源代码(一)—— 共用部分        
 65我的数据访问函数库的源代码(一)—— 共用部分            errorMsg = null;
 66我的数据访问函数库的源代码(一)—— 共用部分            cm.Parameters.Clear();
 67我的数据访问函数库的源代码(一)—— 共用部分            cm.Connection.Close();
 68我的数据访问函数库的源代码(一)—— 共用部分            cm.Dispose();
 69我的数据访问函数库的源代码(一)—— 共用部分        }

 70我的数据访问函数库的源代码(一)—— 共用部分        #endregion

 71我的数据访问函数库的源代码(一)—— 共用部分
 72我的数据访问函数库的源代码(一)—— 共用部分        public DataAccessLayer()    //构造函数
 73我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
 74我的数据访问函数库的源代码(一)—— 共用部分            //默认不使用事务
 75我的数据访问函数库的源代码(一)—— 共用部分            isUseTrans = false;        
 76我的数据访问函数库的源代码(一)—— 共用部分            //得到 SqlCommand 的实例
 77我的数据访问函数库的源代码(一)—— 共用部分            cm = new SqlCommand();
 78我的数据访问函数库的源代码(一)—— 共用部分            //获取连接字符串
 79我的数据访问函数库的源代码(一)—— 共用部分            cm.Connection = new SqlConnection(HBS.Config.Connection.ConnectionString );
 80我的数据访问函数库的源代码(一)—— 共用部分            //初始化错误信息
 81我的数据访问函数库的源代码(一)—— 共用部分            errorMsg = "0";
 82我的数据访问函数库的源代码(一)—— 共用部分            isShowErrorSQL = true;  //本地运行,显示出错的查询语句(包括存储过程名程)
 83我的数据访问函数库的源代码(一)—— 共用部分            //isShowErrorSQL = false; //服务器运行,不显示出错的查询语句(包括存储过程名程)
 84我的数据访问函数库的源代码(一)—— 共用部分        }

 85我的数据访问函数库的源代码(一)—— 共用部分        
 86我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        内部函数#region 内部函数
 87我的数据访问函数库的源代码(一)—— 共用部分        
 88我的数据访问函数库的源代码(一)—— 共用部分        //设置初始值
 89我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
 90我的数据访问函数库的源代码(一)—— 共用部分        /// 设置 errorMsg = "0" ;cm.CommandText 和 cm.CommandType
 91我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>
 92我的数据访问函数库的源代码(一)—— 共用部分        /// <param name="commandText">查询语句或者存储过程</param>
 93我的数据访问函数库的源代码(一)—— 共用部分        /// <param name="commandType">1:存储过程;2:查询语句</param>

 94我的数据访问函数库的源代码(一)—— 共用部分        private void SetCommand(string commandText,int commandType)
 95我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
 96我的数据访问函数库的源代码(一)—— 共用部分            errorMsg = "0";                            //清空错误信息
 97我的数据访问函数库的源代码(一)—— 共用部分            executeRowCount = 0;
 98我的数据访问函数库的源代码(一)—— 共用部分            cm.CommandText = commandText;
 99我的数据访问函数库的源代码(一)—— 共用部分            if (commandType == 1)
100我的数据访问函数库的源代码(一)—— 共用部分                cm.CommandType = CommandType.Text;
101我的数据访问函数库的源代码(一)—— 共用部分            else
102我的数据访问函数库的源代码(一)—— 共用部分                cm.CommandType = CommandType.StoredProcedure;
103我的数据访问函数库的源代码(一)—— 共用部分        }

104我的数据访问函数库的源代码(一)—— 共用部分
105我的数据访问函数库的源代码(一)—— 共用部分        //设置出错信息
106我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
107我的数据访问函数库的源代码(一)—— 共用部分        /// 当发生异常时,所作的处理
108我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>
109我的数据访问函数库的源代码(一)—— 共用部分        /// <param name="FunctionName">函数名称</param>
110我的数据访问函数库的源代码(一)—— 共用部分        /// <param name="commandText">查询语句或者存储过程</param>
111我的数据访问函数库的源代码(一)—— 共用部分        /// <param name="message">错误信息</param>

112我的数据访问函数库的源代码(一)—— 共用部分        private void SetErrorMsg(string FunctionName,string commandText,string message)
113我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
114我的数据访问函数库的源代码(一)—— 共用部分            //设置返回给调用者的错误信息
115我的数据访问函数库的源代码(一)—— 共用部分            errorMsg = FunctionName + "函数出现错误。<BR>错误信息:" + message;
116我的数据访问函数库的源代码(一)—— 共用部分            if (isShowErrorSQL )  errorMsg += "<BR>查询语句:" + commandText ;
117我的数据访问函数库的源代码(一)—— 共用部分            if (isUseTrans)
118我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
119我的数据访问函数库的源代码(一)—— 共用部分                this.TranRollBack();            //事务模式下:自动回滚事务,不用调用者回滚
120我的数据访问函数库的源代码(一)—— 共用部分            }

121我的数据访问函数库的源代码(一)—— 共用部分
122我的数据访问函数库的源代码(一)—— 共用部分            cm.Connection.Close();                //关闭连接
123我的数据访问函数库的源代码(一)—— 共用部分            addLogErr(commandText,errorMsg);    //记录到错误日志
124我的数据访问函数库的源代码(一)—— 共用部分        }

125我的数据访问函数库的源代码(一)—— 共用部分
126我的数据访问函数库的源代码(一)—— 共用部分        #endregion
 
127我的数据访问函数库的源代码(一)—— 共用部分
128我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        记录错误日志#region 记录错误日志
129我的数据访问函数库的源代码(一)—— 共用部分        //如果要使用的话,根据你的需要进行修改。
130我的数据访问函数库的源代码(一)—— 共用部分        public void addLogErr(string SPName,string ErrDescribe)
131我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
132我的数据访问函数库的源代码(一)—— 共用部分            //记录到错误日志
133我的数据访问函数库的源代码(一)—— 共用部分            string FilePath = System.Web.HttpContext.Current.Server.MapPath("/log/" + DateTime.Now.ToString("yyyyMMdd"+ ".txt");
134我的数据访问函数库的源代码(一)—— 共用部分            System.Text.StringBuilder str = new System.Text.StringBuilder();
135我的数据访问函数库的源代码(一)—— 共用部分            str.Append(DateTime.Now.ToString());
136我的数据访问函数库的源代码(一)—— 共用部分            str.Append("\t");
137我的数据访问函数库的源代码(一)—— 共用部分            str.Append(System.Web.HttpContext.Current.Request.Url.PathAndQuery);
138我的数据访问函数库的源代码(一)—— 共用部分            str.Append("\r\n");
139我的数据访问函数库的源代码(一)—— 共用部分            str.Append(SPName);
140我的数据访问函数库的源代码(一)—— 共用部分            str.Append("\r\n");
141我的数据访问函数库的源代码(一)—— 共用部分            str.Append(ErrDescribe.Replace("<BR>",""));
142我的数据访问函数库的源代码(一)—— 共用部分            if (isUseTrans)
143我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
144我的数据访问函数库的源代码(一)—— 共用部分                str.Append("\r\n");
145我的数据访问函数库的源代码(一)—— 共用部分                str.Append("启动事务下出现异常!");
146我的数据访问函数库的源代码(一)—— 共用部分                isUseTrans = false;                    //修改事务标志。设置为不使用事务
147我的数据访问函数库的源代码(一)—— 共用部分            }

148我的数据访问函数库的源代码(一)—— 共用部分            str.Append("\r\n\r\n");
149我的数据访问函数库的源代码(一)—— 共用部分
150我的数据访问函数库的源代码(一)—— 共用部分            System.IO.StreamWriter sw = null;
151我的数据访问函数库的源代码(一)—— 共用部分            try
152我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
153我的数据访问函数库的源代码(一)—— 共用部分                sw = new System.IO.StreamWriter(FilePath,true,System.Text.Encoding.Unicode );
154我的数据访问函数库的源代码(一)—— 共用部分                sw.Write(str.ToString());
155我的数据访问函数库的源代码(一)—— 共用部分            }

156我的数据访问函数库的源代码(一)—— 共用部分            catch(Exception ex)
157我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
158我的数据访问函数库的源代码(一)—— 共用部分                System.Web.HttpContext.Current.Response.Write("没有访问日志文件的权限!或日志文件只读!");
159我的数据访问函数库的源代码(一)—— 共用部分            }

160我的数据访问函数库的源代码(一)—— 共用部分            finally
161我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
162我的数据访问函数库的源代码(一)—— 共用部分                if (sw != null)
163我的数据访问函数库的源代码(一)—— 共用部分                    sw.Close();
164我的数据访问函数库的源代码(一)—— 共用部分            }

165我的数据访问函数库的源代码(一)—— 共用部分        }

166我的数据访问函数库的源代码(一)—— 共用部分        #endregion

167我的数据访问函数库的源代码(一)—— 共用部分
168我的数据访问函数库的源代码(一)—— 共用部分        //事务日志
169我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        事务处理部分。并没有做太多的测试,有不合理的地方请多指教#region 事务处理部分。并没有做太多的测试,有不合理的地方请多指教
170我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
171我的数据访问函数库的源代码(一)—— 共用部分        /// 打开连接,并且开始事务。
172我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>

173我的数据访问函数库的源代码(一)—— 共用部分        public void TranBegin()
174我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
175我的数据访问函数库的源代码(一)—— 共用部分            cm.Connection.Open();        //打开连接,直到回滚事务或者提交事务。
176我的数据访问函数库的源代码(一)—— 共用部分            sqlTrans = cm.Connection.BeginTransaction();    //开始一个事务
177我的数据访问函数库的源代码(一)—— 共用部分            cm.Transaction = sqlTrans;    //交给Command
178我的数据访问函数库的源代码(一)—— 共用部分            isUseTrans = true;            //标记为启用事务
179我的数据访问函数库的源代码(一)—— 共用部分        }

180我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
181我的数据访问函数库的源代码(一)—— 共用部分        /// 提交事务,并关闭连接
182我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>

183我的数据访问函数库的源代码(一)—— 共用部分        public void TranCommit()
184我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
185我的数据访问函数库的源代码(一)—— 共用部分            if (isUseTrans)
186我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
187我的数据访问函数库的源代码(一)—— 共用部分                sqlTrans.Commit();                //提交事务
188我的数据访问函数库的源代码(一)—— 共用部分                cm.Connection.Close();            //关闭连接
189我的数据访问函数库的源代码(一)—— 共用部分                isUseTrans = false;                //修改事务标志。
190我的数据访问函数库的源代码(一)—— 共用部分            }

191我的数据访问函数库的源代码(一)—— 共用部分            else
192我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
193我的数据访问函数库的源代码(一)—— 共用部分                //没有启用事务,或者已经回滚,或者已经提交了事务
194我的数据访问函数库的源代码(一)—— 共用部分                addLogErr("误操作","在没有启用事务,或者已经回滚,或者已经提交了事务的情况下再次提交事务。请注意查看程序流程!");
195我的数据访问函数库的源代码(一)—— 共用部分            }

196我的数据访问函数库的源代码(一)—— 共用部分
197我的数据访问函数库的源代码(一)—— 共用部分        }

198我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        /**//// <summary>
199我的数据访问函数库的源代码(一)—— 共用部分        /// 回滚事务,并关闭连接。在程序出错的时候,自动调用。
200我的数据访问函数库的源代码(一)—— 共用部分        /// </summary>

201我的数据访问函数库的源代码(一)—— 共用部分        public void TranRollBack()
202我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分        我的数据访问函数库的源代码(一)—— 共用部分{
203我的数据访问函数库的源代码(一)—— 共用部分            if (isUseTrans)
204我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
205我的数据访问函数库的源代码(一)—— 共用部分                sqlTrans.Rollback();            //回滚事务
206我的数据访问函数库的源代码(一)—— 共用部分                cm.Connection.Close();            //关闭连接
207我的数据访问函数库的源代码(一)—— 共用部分                isUseTrans = false;                //修改事务标志。
208我的数据访问函数库的源代码(一)—— 共用部分            }

209我的数据访问函数库的源代码(一)—— 共用部分            else
210我的数据访问函数库的源代码(一)—— 共用部分我的数据访问函数库的源代码(一)—— 共用部分            我的数据访问函数库的源代码(一)—— 共用部分{
211我的数据访问函数库的源代码(一)—— 共用部分                //没有启用事务,或者已经回滚,或者已经提交了事务
212我的数据访问函数库的源代码(一)—— 共用部分                addLogErr("误操作","在没有启用事务,或者已经回滚,或者已经提交了事务的情况下再次回滚事务。请注意查看程序流程!");
213我的数据访问函数库的源代码(一)—— 共用部分            }

214我的数据访问函数库的源代码(一)—— 共用部分        }

215我的数据访问函数库的源代码(一)—— 共用部分
216我的数据访问函数库的源代码(一)—— 共用部分        #endregion

217我的数据访问函数库的源代码(一)—— 共用部分
218我的数据访问函数库的源代码(一)—— 共用部分}

219我的数据访问函数库的源代码(一)—— 共用部分}


下载全部源文件。 

http://www.cnblogs.com/jyk/archive/2008/04/25/1170979.html

上一篇:实现物联网项目,你需要提前知道的6件事情


下一篇:《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.5 位运算实战演练1