zoukankan      html  css  js  c++  java
  • Accesshelper.cs

    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Collections;
    using System.IO;
    using System.Globalization;
    using System.Configuration;
    
    namespace ArticleManage
    {
        public class DataAccess
        {
            定义#region 定义
            protected OleDbCommand Comm;
            protected OleDbDataAdapter Adap;
            protected OleDbConnection Conn;    //SQL连接        
            private string _connectString;    //连接串
            private string _commandString;    //SQL命令
            private Hashtable _dict, _result, _mapTable;
            private DataSet _ds;    //返回结果数据集
            private DataRow _recordSet;        //纪录集
            private string _tableName;        //表名
            private int _recordCount;            //纪录集的行数
            private bool _eOF;                //结果集是否为空,是否已经到了结尾
            private string DB;
            private string _deleteOP;
            private string _path;
            private StreamWriter SWCreate, SWApp;
            private string _errorMessage;
            private bool _writeLog;
            #endregion
    
            属性集#region 属性集
            /**//// <summary>
            /// 出错信息
            /// </summary>
            /// 
            public string ErrorMessage
            {
                get { return this._errorMessage; }
                set { this._errorMessage = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 设置或者取得删除的操作者
            /// </summary>
            public string DeleteOP
            {
                get { return this._deleteOP; }
                set { this._deleteOP = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 取得是否溢出
            /// </summary>
            public bool EOF
            {
                get { return this._eOF; }
                set { this._eOF = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 取得执行语句后得出的纪录条数
            /// </summary>
            public int RecordCount
            {
                get { return this._recordCount; }
                set { this._recordCount = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 数据库中的表名
            /// </summary>
            public string TableName
            {
                get { return this._tableName; }
                set { this._tableName = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 返回的记录集
            /// </summary>
            public DataRow RecordSet
            {
                get { return this._recordSet; }
                set { this._recordSet = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 返回的数据集
            /// </summary>
            public DataSet DS
            {
                get { return this._ds; }
                set { this._ds = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 字段和控件的映射表
            /// </summary>
            public Hashtable MapTable
            {
                get { return this._mapTable; }
                set { this._mapTable = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 修改数据时,作为修改结果
            /// </summary>
            public Hashtable Result
            {
                get { return this._result; }
                set { this._result = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 保存数据用的字段和值对应的哈希表,修改数据时用作条件
            /// </summary>
            public Hashtable Dict
            {
                get { return this._dict; }
                set { this._dict = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 查询语句
            /// </summary>
            public string CommandString
            {
                get { return this._commandString; }
                set { this._commandString = value; }
            }
    
            /**//**/
            /**//// <summary>
            /// 连接串
            /// </summary>
            public string ConnectString
            {
                get { return this._connectString; }
                set { this._connectString = value; }
            }
    
            #endregion 
           
            DataAccess的构造函数#region DataAccess的构造函数
            /**//// <summary>
            /// 空构造函数
            /// <appSettings>
            ///        <add key="DBConn" value="provider=microsoft.jet.oledb.4.0;data source="/>
            ///        <add key="dbPath" value="~/App_Data/ArticleManage.mdb"/>
            ///</appSettings>
            /// </summary>
            public DataAccess()
            {
                ConnectString = System.Configuration.ConfigurationSettings.AppSettings["DBConn"]+System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings["dbPath"])+";";
                Conn = new System.Data.OleDb.OleDbConnection(ConnectString);
                if (System.Configuration.ConfigurationSettings.AppSettings["WriteLog"] == "true")
                {
                    _writeLog = true;
                }
                else
                {
                    _writeLog = false;
                }
    
            }
    
            ~DataAccess()
            {
            }
    
            /**//**/
            /**//// <summary>
            /// DataAccess的构造函数
            /// <appSettings>
            ///        <add key="DBConn" value="provider=microsoft.jet.oledb.4.0;data source="/>
            ///        <add key="DB1" value="~/App_Data/ArticleManage.mdb"/>
            ///</appSettings>        
            /// </summary>
            /// <param name="DB1">要访问的数据库名,Web.config里设置的连接字符串对应的key</param>
            /// <param name="TableName1">要访问的数据表名</param>
            public DataAccess(string DB1, string TableName1)
            {
                this.ErrorMessage = "";
                DB = DB1;
                TableName = TableName1;
                try
                {
                    ConnectString = System.Configuration.ConfigurationSettings.AppSettings["DBConn"]+System.Web.HttpContext.Current.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings["DB"])+";";
                    if (System.Configuration.ConfigurationSettings.AppSettings["WriteLog"] == "true")
                    {
                        _writeLog = true;
                    }
                    else
                    {
                        _writeLog = false;
                    }
                    Conn = new System.Data.OleDb.OleDbConnection(ConnectString);
                    Dict = new Hashtable();
                    Result = new Hashtable();
                    MapTable = new Hashtable();
                    DS = new DataSet();
    
                    //            IS_Open = false;
                    _path = "C:\WebDebug.log";
                    if (_writeLog)
                    {
                        if (!File.Exists(_path))
                        {
                            using (SWCreate = File.CreateText(_path))
                            {
                                SWCreate.WriteLine(" ");
                                SWCreate.Close();
                            }
                        }
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine(" ");
                        }
                    }
                }
                catch (Exception e)
                {
                    this.ErrorMessage = e.ToString();
                }
            }
    
            /**//**/
            /**//// <summary>
            /// DataAccess的构造函数
            /// </summary>
            /// <param name="CST">数据库的连接字符串</param>
            /// <param name="TableName1">要访问的数据表名</param>
            /// <param name="flag">是否初始化</param>
            public DataAccess(string CST, string TableName1, bool flag)
            {
                if (flag == true)
                {
                    this.ErrorMessage = "";
                    TableName = TableName1;
                    try
                    {
                        if (System.Configuration.ConfigurationSettings.AppSettings["WriteLog"] == "true")
                        {
                            _writeLog = true;
                        }
                        else
                        {
                            _writeLog = false;
                        }
                        ConnectString = CST;
                        Conn = new System.Data.OleDb.OleDbConnection(ConnectString);
                        Dict = new Hashtable();
                        Result = new Hashtable();
                        MapTable = new Hashtable();
                        DS = new DataSet();
    
                        _path = "C:\WebDebug.log";
                        if (_writeLog)
                        {
                            if (!File.Exists(_path))
                            {
                                using (SWCreate = File.CreateText(_path))
                                {
                                    SWCreate.WriteLine(" ");
                                    SWCreate.Close();
                                }
                            }
                            using (SWApp = File.AppendText(_path))
                            {
                                SWApp.WriteLine(" ");
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        this.ErrorMessage = e.ToString();
                    }
                }
            }
            #endregion
    
            ExecuteNonQuery#region ExecuteNonQuery
            /**//// <summary>
            /// 执行无返回结果的SQL
            /// </summary>
            /// <param name="strSQL"></param>
            public void ExecuteNonQuery(string strSQL)
            {                   
                Comm = new OleDbCommand();
                OleDbTransaction Trans;
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction = Trans;
                Comm.CommandTimeout = 60;
    
                try
                {
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
    
                    Comm.ExecuteNonQuery();
                    Trans.Commit();
                    this.Conn.Close();
                }
                catch (Exception e)
                {
                    Trans.Rollback();
                    this.Conn.Close();
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  Error Message : " + e.ToString());
                        }
                    }
                    this.ErrorMessage = e.ToString();
                    throw new Exception(e.ToString());
                }            
            }
    
            /**//// <summary>
            /// 执行无返回结果的SQL
            /// </summary>
            /// <param name="param">参数集合</param>
            /// <param name="strSQL"></param>
            public void ExecuteNonQuery(string strSQL, ICollection param)
            {           
                Comm = new OleDbCommand();
                OleDbTransaction Trans;
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction = Trans;
                Comm.CommandTimeout = 60;
    
                try
                {
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
    
                    if (param != null)
                    {
                        foreach (ParamInfo p in param)
                        {
                            IDbDataParameter pa = Comm.CreateParameter();
                            pa.ParameterName = p.Name;
                            pa.Value = p.Value;
    
                            //处理大文本
                            if (pa is System.Data.OleDb.OleDbParameter && pa.Value != null && pa.Value.ToString().Length >= 4000)
                            {
                                System.Data.OleDb.OleDbParameter p1 = pa as System.Data.OleDb.OleDbParameter;
                                p1.OleDbType = System.Data.OleDb.OleDbType.VarWChar;
                                Comm.Parameters.Add(p1);
                            }
                            else
                            {
                                Comm.Parameters.Add(pa);
                            }
                        }
                    }
    
                    Comm.ExecuteNonQuery();
                    FillParameterValue(Comm.Parameters, param);
                    Trans.Commit();
                    this.Conn.Close();
                }
                catch (Exception e)
                {
                    Trans.Rollback();
                    this.Conn.Close();
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  Error Message : " + e.ToString());
                        }
                    }
                    this.ErrorMessage = e.ToString();
                    throw new Exception(e.ToString());
                }           
            }
            #endregion
    
            ExecuteScalar#region ExecuteScalar
            /**//// <summary>
            /// 返回查询结果的第一行第一列的值
            /// </summary>
            /// <param name="strSQL"></param>
            /// <returns></returns>
            public object ExecuteScalar(string strSQL)
            {
                OleDbTransaction Trans;
                Comm = new OleDbCommand();
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction =Trans ;             
                Comm.CommandTimeout = 60;
                try
                {
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
    
                    object objResutl = Comm.ExecuteScalar();
                    Trans.Commit();
                    this.Conn.Close();
                    return objResutl;
                }
                catch (Exception e)
                {
                    Trans.Rollback();
                    this.Conn.Close();
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  Error Message : " + e.ToString());
                        }
                    }
                    this.ErrorMessage = e.ToString();
                    throw new Exception(e.ToString());
                }
            }
    
            /**//// <summary>
            /// 返回查询结果的第一行第一列的值
            /// </summary>
            /// <param name="strSQL"></param>
            /// <param name="param">参数集合</param>
            /// <returns></returns>
            public object ExecuteScalar(string strSQL,ICollection param)
            {
                OleDbTransaction Trans;
                Comm = new OleDbCommand();
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction =Trans ;             
                Comm.CommandTimeout = 60;
                try
                {
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
                    if ( param != null )
                    {
                        foreach ( ParamInfo p in param )
                        {
                            IDbDataParameter pa = Comm.CreateParameter();
                            pa.ParameterName = p.Name;
                            pa.Value = p.Value;
                            pa.Direction = p.Direction;
    
                            Comm.Parameters.Add(pa);
                        }
                    }
    
                    object objResutl = Comm.ExecuteScalar();
                    FillParameterValue(Comm.Parameters,param);
                    Trans.Commit();
                    this.Conn.Close();
                    return objResutl;
    
                }
                catch (Exception e)
                {
                    Trans.Rollback();
                    this.Conn.Close();
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]  Error Message : " + e.ToString());
                        }
                    }
                    this.ErrorMessage = e.ToString();
                    throw new Exception(e.ToString());
                }
            }
            #endregion
    
            ExecuteDataSet#region ExecuteDataSet
            /**//// <summary>
            /// 执行SQL语句并返回DataTable对象
            /// </summary>
            public DataSet ExecuteDataSet(string strSQL)
            {
                OleDbTransaction Trans;
                Comm = new OleDbCommand();
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction =Trans ;             
                Comm.CommandTimeout = 60;
                DataSet ds = new DataSet();
                try
                {                
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Begin Get DataSet.");
                            SWApp.WriteLine("CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
    
                    try
                    {
                        IDataReader dr = Comm.ExecuteReader();        
                        do
                        {
                            DataTable dt = new DataTable();
                            dt.Locale = CultureInfo.CurrentCulture;
    
                            DataColumn col = null;
                            DataRowCollection rows = dr.GetSchemaTable().Rows;
                            foreach(DataRow row in rows)
                            {
                                col = new DataColumn();
                                col.ColumnName = row["ColumnName"] == null ? null : row["ColumnName"].ToString();
                                col.Unique = Convert.ToBoolean(row["IsUnique"]);
                                col.AllowDBNull = Convert.ToBoolean(row["AllowDBNull"]);
                                col.ReadOnly = Convert.ToBoolean(row["IsReadOnly"]);
                                col.DataType = row["DataType"] as Type;
    
                                dt.Columns.Add(col);
                            }
    
                        while (dr.Read())
                        {
                            DataRow row = dt.NewRow();
                            
                            foreach(DataColumn c in dt.Columns)
                            {
                                row[c] = dr[c.ColumnName];
                            }
    
                            dt.Rows.Add(row);
                        }
    
                            ds.Tables.Add(dt);
                        }
                        while (dr.NextResult());
                        dr.Close();                    
                        Trans.Commit();
                    }
                    catch (Exception e)
                    {
                        Trans.Rollback();                    
                        this.ErrorMessage = e.ToString();
                        if (_writeLog)
                        {
                            using (SWApp = File.AppendText(_path))
                            {
                                SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Error Message: " + e.ToString());
                            }
                        }
                        throw new Exception(e.ToString());
                    }
    
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==>  End of Getting DataSet.");
                            SWApp.Close();
                        }
                    }
                }
                finally
                {
                    Conn.Close();
                }
                return ds;
            }
    
            /**//// <summary>
            /// 执行SQL语句并返回DataTable对象
            /// <param name="strSQL">SQL语句</param>
            /// <param name="param">参数集合</param>
            /// </summary>
            public DataSet ExecuteDataSet(string strSQL, ICollection param)
            {
                OleDbTransaction Trans;
                Comm = new OleDbCommand();
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction =Trans ;             
                Comm.CommandTimeout = 60;
                DataSet ds = new DataSet();
                try
                {                
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Begin Get DataSet.");
                            SWApp.WriteLine("CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
    
                    try
                    {
                        if ( param != null )
                        {
                            foreach ( ParamInfo p in param )
                            {
                                IDbDataParameter pa = Comm.CreateParameter();
                                pa.ParameterName = p.Name;
                                pa.Value = p.Value;
                                pa.Direction = p.Direction;
    
                                Comm.Parameters.Add(pa);
                            }
                        }
                        IDataReader dr = Comm.ExecuteReader(); 
    
                        do
                        {
                            DataTable dt = new DataTable();
                            dt.Locale = CultureInfo.CurrentCulture;
    
                            DataColumn col = null;
                            DataRowCollection rows = dr.GetSchemaTable().Rows;
                            foreach(DataRow row in rows)
                            {
                                col = new DataColumn();
                                col.ColumnName = row["ColumnName"] == null ? null : row["ColumnName"].ToString();
                                col.Unique = Convert.ToBoolean(row["IsUnique"]);
                                col.AllowDBNull = Convert.ToBoolean(row["AllowDBNull"]);
                                col.ReadOnly = Convert.ToBoolean(row["IsReadOnly"]);
                                col.DataType = row["DataType"] as Type;
    
                                dt.Columns.Add(col);
                            }
    
                        while (dr.Read())
                        {
                            DataRow row = dt.NewRow();
                            
                            foreach(DataColumn c in dt.Columns)
                            {
                                row[c] = dr[c.ColumnName];
                            }
    
                            dt.Rows.Add(row);
                        }
    
                            ds.Tables.Add(dt);
                        }
                        while (dr.NextResult());
                        dr.Close();                    
                        Trans.Commit();
                    }
                    catch (Exception e)
                    {
                        Trans.Rollback();                    
                        this.ErrorMessage = e.ToString();
                        if (_writeLog)
                        {
                            using (SWApp = File.AppendText(_path))
                            {
                                SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Error Message: " + e.ToString());
                            }
                        }
                        throw new Exception(e.ToString());
                    }
    
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==>  End of Getting DataSet.");
                            SWApp.Close();
                        }
                    }
                }
                finally
                {
                    Conn.Close();
                }
                return ds;
            }
            #endregion
    
            ExecuteDataTable#region ExecuteDataTable
            /**//// <summary>
            /// 执行SQL语句并返回DataTable对象
            /// </summary>
            public DataTable ExecuteDataTable(string strSQL)
            {
                return ExecuteDataSet(strSQL).Tables[0];
            }
    
            /**//// <summary>
            /// 执行SQL语句并返回DataTable对象
            /// <param name="strSQL">SQL语句</param>
            /// <param name="param">参数集合</param>
            /// </summary>
            public DataTable ExecuteDataTable(string strSQL, ICollection param)
            {
                return ExecuteDataSet(strSQL,param).Tables[0];
            }
            #endregion
    
            ExecuteDataReader#region ExecuteDataReader
            /**//// <summary>
            /// <param name="strSQL">SQL语句</param>
            /// </summary>
            public IDataReader ExecuteDataReader(string strSQL)
            {
                OleDbTransaction Trans;
                Comm = new OleDbCommand();
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction = Trans;
                Comm.CommandTimeout = 60;
                IDataReader dr ; 
                try
                {
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Begin Get DataReader.");
                            SWApp.WriteLine("CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
    
                    try
                    {
                        dr=Comm.ExecuteReader();
                        Trans.Commit();
                    }
                    catch (Exception e)
                    {
                        Trans.Rollback();
                        this.ErrorMessage = e.ToString();
                        if (_writeLog)
                        {
                            using (SWApp = File.AppendText(_path))
                            {
                                SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Error Message: " + e.ToString());
                            }
                        }
                        throw new Exception(e.ToString());
                    }
    
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==>  End of Getting DataReader.");
                            SWApp.Close();
                        }
                    }
                }
                finally
                {
                    Conn.Close();
                }
                return dr;
            }
    
            /**//// <summary>
            ///
            /// <param name="strSQL">SQL语句</param>
            /// <param name="param">参数集合</param>
            /// </summary>
            public IDataReader ExecuteDataReader(string strSQL, ICollection param)
            {
                OleDbTransaction Trans;
                Comm = new OleDbCommand();
                Conn.Open();
                Trans = Conn.BeginTransaction();
                Comm.CommandText = strSQL;
                Comm.Connection = Conn;
                Comm.Transaction = Trans;
                Comm.CommandTimeout = 60;
                IDataReader dr;            
                try
                {
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Begin Get DataReader.");
                            SWApp.WriteLine("CommandString = " + strSQL);
                            SWApp.Close();
                        }
                    }
    
                    try
                    {
                        if (param != null)
                        {
                            foreach (ParamInfo p in param)
                            {
                                IDbDataParameter pa = Comm.CreateParameter();
                                pa.ParameterName = p.Name;
                                pa.Value = p.Value;
                                pa.Direction = p.Direction;
    
                                Comm.Parameters.Add(pa);
                            }
                        }
                        dr = Comm.ExecuteReader();
                        Trans.Commit();                    
                    }
                    catch (Exception e)
                    {
                        Trans.Rollback();
                        this.ErrorMessage = e.ToString();
                        if (_writeLog)
                        {
                            using (SWApp = File.AppendText(_path))
                            {
                                SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==> Error Message: " + e.ToString());
                            }
                        }
                        throw new Exception(e.ToString());
                    }
    
                    if (_writeLog)
                    {
                        using (SWApp = File.AppendText(_path))
                        {
                            SWApp.WriteLine("[" + DateTime.Now.ToString() + "]==>  End of Getting DataReader.");
                            SWApp.Close();
                        }
                    }
                }
                finally
                {
                    Conn.Close();
                }
                return dr;
            }
            #endregion
    
            FillParameterValue#region FillParameterValue
            /**//// <summary>
            /// 填充输出型参数和返回值型参数
            /// </summary>
            /// <param name="OutPutParameters">SQL命令执行后的参数集合</param>
            /// <param name="param">SQL命令执行前的参数集合</param>
            void FillParameterValue(System.Data.IDataParameterCollection OutPutParameters, ICollection param)
            {
                if (OutPutParameters == null || param == null) return;
    
                ArrayList procParam = new ArrayList();
                foreach (IDbDataParameter OleDbParameter in OutPutParameters) 
                {
                    foreach (ParamInfo p in param)
                    {
                        if (p.Name == OleDbParameter.ParameterName)
                        {
                            procParam.Add(new ParamInfo(p.Name, OleDbParameter.Value, p.Direction, p.Size));
                        }
                    }
                }
    
                ArrayList procOutParam = param as ArrayList;
                procOutParam.Clear();
                foreach (ParamInfo p in procParam) //填充参数值
                {
                    procOutParam.Add(new ParamInfo(p.Name, p.Value, p.Direction, p.Size));
                }
            }
            #endregion
        }   
    
        ParamInfo#region ParamInfo
        /**//// <summary>
        /// SQL参数结构体
        /// </summary>
        public struct ParamInfo
        {
            /**//// <summary>
            /// 参数名称
            /// </summary>
            public string Name;
    
            /**//// <summary>
            /// 值
            /// </summary>
            public object Value;
    
            /**//// <summary>
            /// 参数长度
            /// </summary>
            public int Size;
    
            /**//// <summary>
            /// 参数方向
            /// </summary>
            public ParameterDirection Direction;
    
            /**//// <summary>
            /// 初始化参数对象
            /// </summary>
            /// <param name="name">参数名称</param>
            /// <param name="val">值</param>
            public ParamInfo(string name, object val)
            {
                Name = name;
                Value = val;
                Direction = ParameterDirection.Input;
                Size = Value == null ? 50 : Value.ToString().Length;
            }
    
            /**//// <summary>
            /// 初始化参数对象
            /// </summary>
            /// <param name="name">参数名称</param>
            /// <param name="val">值</param>
            /// <param name="direction"></param>
            public ParamInfo(string name, object val, ParameterDirection direction)
            {
                Name = name;
                Value = val;
                Direction = direction;
                Size = Value == null ? 50 : Value.ToString().Length;
            }
    
            public ParamInfo(string name, object val, ParameterDirection direction, int size)
            {
                Name = name;
                Value = val;
                Direction = direction;
                Size = size;
            }
        } 
        #endregion
    }
    

      

  • 相关阅读:
    POCO库——Foundation组件之日期时间DateTime
    POCO库——Foundation组件之加解密Crypt
    POCO库——Foundation组件之缓存Cache
    POCO库——Foundation组件之核心Core
    POCO库——Foundation组件概述
    HP-SOCKET TCP/UDP通信框架库解析
    Notepad++ 使用nppexec插件配置简易开发环境
    Duilib源码分析(五)UI布局—Layout与各子控件
    Breakpad Google的crash捕获、抓取开源库
    Pugixml一种快速解析XML文件的开源解析库
  • 原文地址:https://www.cnblogs.com/huxiaolin/p/4488612.html
Copyright © 2011-2022 走看看