通用权限管理系统底层更换最新Oracle驱动的方法

通用权限管理系统底层先前访问Oracle数据库时需要客户端安装驱动软件,如下图:

安装完毕还需要一番配置,系统再引用其dll,

现在我们使用了最新的dll

该dll是Oracle出的最新的版本。

通用权限管理系统底层需要调整的地方:

1、OracleHelper.cs调整

OracleHelper.cs完整的代码
namespace DotNet.Utilities
{
    // 需要安装客户端安装驱动
    //using Oracle.DataAccess.Client;
    // 2016.07.04 不需要客户端驱动
    using Oracle.ManagedDataAccess.Client;
    /// <summary>
    /// OracleHelper
    /// 有关数据库连接的方法。
    /// 
    /// 修改记录
    /// 
    ///        2008.08.26 版本:1.3 JiRiGaLa 修改Open时的错误反馈。
    ///        2008.06.01 版本:1.2 JiRiGaLa 数据库连接获得方式进行改进,构造函数获得调通。
    ///        2008.05.08 版本:1.1 JiRiGaLa 调试通过,修改一些 有关参数的 Bug。
    ///        2008.05.07 版本:1.0 JiRiGaLa 创建。
    /// 
    /// 版本:1.3
    /// 
    /// <author>
    ///        <name>JiRiGaLa</name>
    ///        <date>2008.08.26</date>
    /// </author> 
    /// </summary>
    public class OracleHelper : BaseDbHelper, IDbHelper
    {
        public override DbProviderFactory GetInstance()
        {
            // 需要安装客户端安装驱动
            //return DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
            // 2016.07.04 不需要客户端驱动
            return DbProviderFactories.GetFactory("Oracle.ManagedDataAccess.Client");
        }

        #region public override CurrentDbType CurrentDbType  当前数据库类型
        /// <summary> 
        /// 当前数据库类型
        /// </summary>
        public override CurrentDbType CurrentDbType
        {
            get
            {
                return CurrentDbType.Oracle;
            }
        }
        #endregion

        #region public OracleHelper() 构造方法
        /// <summary>
        /// 构造方法
        /// </summary>
        public OracleHelper()
        {
            FileName = "OracleHelper.txt";    // sql查询句日志
        }
        #endregion

        #region public OracleHelper(string connectionString) 构造方法
        /// <summary>
        /// 构造方法
        /// </summary>
        /// <param name="connectionString">数据连接</param>
        public OracleHelper(string connectionString)
            : this()
        {
            this.ConnectionString = connectionString;
        }
        #endregion

        #region public string GetDbNow() 获得数据库日期时间
        /// <summary>
        /// 获得数据库日期时间
        /// </summary>
        /// <returns>日期时间</returns>
        public string GetDbNow()
        {
            return " SYSDATE ";
        }
        #endregion

        #region public string GetDbDateTime() 获得数据库日期时间
        /// <summary>
        /// 获得数据库日期时间
        /// </summary>
        /// <returns>日期时间</returns>
        public string GetDbDateTime()
        {
            string commandText = " SELECT " + this.GetDbNow() + " FROM DUAL ";
            this.Open();
            string dateTime = this.ExecuteScalar(commandText, null, CommandType.Text).ToString();
            this.Close();
            return dateTime;
        }
        #endregion

        #region public override string PlusSign() 获得Sql字符串相加符号
        /// <summary>
        ///  获得Sql字符串相加符号
        /// </summary>
        /// <returns>字符加</returns>
        public override string PlusSign()
        {
            return " || ";
        }
        #endregion

        #region string PlusSign(params string[] values) 获得Sql字符串相加符号
        /// <summary>
        ///  获得Sql字符串相加符号
        /// </summary>
        /// <param name="values">参数值</param>
        /// <returns>字符加</returns>
        public string PlusSign(params string[] values)
        {
            string returnValue = string.Empty;
            for (int i = 0; i < values.Length; i++)
            {
                returnValue += values[i] + " || ";
            }
            if (!String.IsNullOrEmpty(returnValue))
            {
                returnValue = returnValue.Substring(0, returnValue.Length - 4);
            }
            else
            {
                returnValue = " || ";
            }
            return returnValue;
        }
        #endregion

        #region public string SqlSafe(string value) 检查参数的安全性
        /// <summary>
        /// 检查参数的安全性
        /// </summary>
        /// <param name="value">参数</param>
        /// <returns>安全的参数</returns>
        public string SqlSafe(string value)
        {
            value = value.Replace("'", "''");
            // value = value.Replace("%", "'%");
            return value;
        }
        #endregion

        #region public IDbDataParameter MakeInParam(string targetFiled, object targetValue) 获取参数
        /// <summary>
        /// 获取参数
        /// </summary>
        /// <param name="targetFiled">目标字段</param>
        /// <param name="targetValue"></param>
        /// <returns>参数</returns>
        public IDbDataParameter MakeInParam(string targetFiled, object targetValue)
        {
            return new OracleParameter(":" + targetFiled, targetValue);
        }
        #endregion

        #region public IDbDataParameter MakeParameter(string targetFiled, object targetValue) 获取参数
        /// <summary>
        /// 获取参数
        /// </summary>
        /// <param name="targetFiled">目标字段</param>
        /// <param name="targetValue"></param>
        /// <returns>参数集</returns>
        public IDbDataParameter MakeParameter(string targetFiled, object targetValue)
        {
            IDbDataParameter dbParameter = null;
            if (targetFiled != null)
            {
                dbParameter = this.MakeInParam(targetFiled, targetValue);
            }
            return dbParameter;
        }
        #endregion

        #region public IDbDataParameter[] MakeParameters(string[] targetFileds, Object[] targetValues) 获取参数
        /// <summary>
        /// 获取参数
        /// </summary>
        /// <param name="targetFiled">目标字段</param>
        /// <param name="targetValue"></param>
        /// <returns>参数集</returns>
        public IDbDataParameter[] MakeParameters(string[] targetFileds, Object[] targetValues)
        {
            List<IDbDataParameter> dbParameters = new List<IDbDataParameter>();
            if (targetFileds != null && targetValues != null)
            {
                for (int i = 0; i < targetFileds.Length; i++)
                {
                    if (targetFileds[i] != null && targetValues[i] != null)
                    {
                        dbParameters.Add(this.MakeInParam(targetFileds[i], targetValues[i]));
                    }
                }
            }
            return dbParameters.ToArray();
        }
        #endregion

        #region public IDbDataParameter[] MakeParameters(List<KeyValuePair<string, object>> parameters) 获取参数
        /// <summary>
        /// 获取参数
        /// </summary>
        /// <param name="parameters">参数</param>
        /// <returns>参数集</returns>
        public IDbDataParameter[] MakeParameters(List<KeyValuePair<string, object>> parameters)
        {
            // 这里需要用泛型列表,因为有不合法的数组的时候
            List<IDbDataParameter> result = new List<IDbDataParameter>();
            if (parameters != null && parameters.Count > 0)
            {
                foreach (var parameter in parameters)
                {
                    if (parameter.Key != null && parameter.Value != null && (!(parameter.Value is Array)))
                    {
                        result.Add(MakeParameter(parameter.Key, parameter.Value));
                    }
                }
            }
            return result.ToArray();
        }
        #endregion

        #region public IDbDataParameter MakeInParam(string parameterName,object parameterValue,DbType dbType, int parameterSize )获取输出参数
        /// <summary>
        /// 获取输出参数
        /// </summary>
        /// <param name="paramName">目标字段</param>
        /// <param name="dbType">数据类型</param>
        /// <param name="size">长度</param>
        /// <returns>参数</returns>
        public IDbDataParameter MakeOutParam(string parameterName, object parameterValue, DbType dbType, int parameterSize)
        {
            return MakeParameter(parameterName, null, dbType, parameterSize, ParameterDirection.Output);
        }
        #endregion

        #region public IDbDataParameter MakeInParam(string parameterName,object parameterValue,DbType dbType, int parameterSize ) 获取输入参数
        /// <summary>
        /// 获取输入参数
        /// </summary>
        /// <param name="paramName">目标字段</param>
        /// <param name="dbType">数据类型</param>
        /// <param name="size"></param>
        /// <param name="value"></param>
        /// <returns>参数</returns>
        public IDbDataParameter MakeInParam(string parameterName, object parameterValue, DbType dbType, int parameterSize)
        {
            return MakeParameter(parameterName, parameterValue, dbType, parameterSize, ParameterDirection.Input);
        }
        #endregion

        #region public IDbDataParameter MakeParameter(string parameterName, object parameterValue, DbType dbType, Int32 parameterSize, ParameterDirection parameterDirection)获取参数
        /// <summary>
        /// 获取参数
        /// </summary>
        /// <param name="paramName">目标字段</param>
        /// <param name="dbType">数据类型</param>
        /// <param name="size">长度</param>
        /// <param name="direction">参数类型</param>
        /// <param name="value"></param>
        /// <returns>参数</returns>

        public IDbDataParameter MakeParameter(string parameterName, object parameterValue, DbType dbType, Int32 parameterSize, ParameterDirection parameterDirection)
        {
            OracleParameter result;

            if (parameterSize > 0)
            {
                result = new OracleParameter(parameterName, (OracleDbType)dbType, parameterSize);
            }
            else
            {
                result = new OracleParameter(parameterName, (OracleDbType)dbType);
            }

            result.Direction = parameterDirection;
            if (!(parameterDirection == ParameterDirection.Output && parameterValue == null))
            {
                result.Value = parameterValue;
            }

            return result;
        }
        #endregion

        #region public string GetParameter(string parameter) 获得参数Sql表达式
        /// <summary>
        /// 获得参数Sql表达式
        /// </summary>
        /// <param name="parameter">参数名称</param>
        /// <returns>字符串</returns>
        public string GetParameter(string parameter)
        {
            return ":" + parameter;
        }
        #endregion
    }
}

2、web.config中需要增加以下节点内容

代码内容

  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client"/>
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
        type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    </DbProviderFactories>
  </system.data>

 

posted @ 2016-07-04 10:12  三人成虎  阅读(491)  评论(2编辑  收藏  举报