通用权限管理系统底层先前访问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 = ; i < values.Length; i++)
{
returnValue += values[i] + " || ";
}
if (!String.IsNullOrEmpty(returnValue))
{
returnValue = returnValue.Substring(, returnValue.Length - );
}
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 = ; 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 > )
{
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 > )
{
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>

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

  1. 如何在通用权限管理系统中集成log4net日志功能

    开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个 ...

  2. 通用权限管理系统接口文档V4.2 版本之消息接口介绍

    通用权限管理系统提供的消息接口可实现消息获取,消息发送,底层使用Redis对消息进行缓存,解决消息的并发请求对数据库的压力. 前端可以通过客户端轮询来获取最新消息,前端效果截图如下:

  3. 通用权限管理系统Ver2.0

    通用权限管理系统Ver2.0平台采用kendo+mvc4+Nhibernate技术实现,底层采用自定义ORM实现数据库底层代码,支持Oracle.SqlServer.mysql等常用数据库,界面采用k ...

  4. 以WCF安全认证方式调用通用权限管理系统获取基础信息资料

    在B/S开发中,涉及到获取系统基础资料的问题,因为是在不同平台下的开发,采用了WCF方式获取. 下面是一个调用通用权限管理系统(吉日嘎拉)基础信息资料的一个demo供参考 调用原理图: web.con ...

  5. Net 通用权限管理系统源码 带数据库设计文档,部署说明文档

    Net 通用权限管理系统源码 带数据库设计文档,部署说明文档 包括数据库设计文档部署安装文档源码数据库文件 下载地址:http://www.mallhd.com/archives/1389

  6. 通用权限管理系统数据字典 V3.9 版本,欢迎开发个各种业务系统的朋友们,参考表结构

    C#.NET通用权限管理系统组件数据字典 导  航 ◇ (01) BaseItemDetails ◇ (02) BaseItems ◇ (03) BaseLog ◇ (04) BaseMessage ...

  7. 通用权限管理系统之权限菜单zTree树的展示及移动的处理方法

    在通用权限管理系统中,有很多数据结构是有父子关系的,如组织机构,部门,权限菜单等,在展示的时候,大多数是通过zTree树的形式展现的,如下: 权限菜单展示 这种数据后台输出比较容易处理,参考如下获取某 ...

  8. 基于Extjs 4.2的通用权限管理系统,通用后台模板,EF+MVC+Extjs 4.2

    基于Extjs 4.2的通用权限管理系统,通用后台. 我们的宗旨:珍爱生命,拒绝重复!Don't Repeat Yourself!!! 本案例采用EntityFramework+MVC4.0+Extj ...

  9. 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心

    基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...

随机推荐

  1. WPF编程 ,TextBlock 显示百分数值的一种简单方法。

    原文:WPF编程 ,TextBlock 显示百分数值的一种简单方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/ ...

  2. 【arm学习】我的第一个裸板程序

    初学ARM感觉写个裸板程序还真的不容易,可能是没有用到ADS,keil之类的开发平台的缘故吧.编译,链接过程在linux平台上完成,这样学起来更有实感,还能顺便熟悉linux环境,以及命令,何乐而不为 ...

  3. Hadoop日记Day6---Linux的常用命令

    一.系统操作(开机.关机.登陆等)命令 选项名称 使用格式 含义 reboot 输入回车即可 立刻重启 shutdown shutdown –r   now 立刻重启 shutdown –r  20: ...

  4. 使用DOS工具修复数据库

    当SQL Server 实例出现异常,无法远程链接时,数据库管理员需要登陆到SQL Server实例机器上,通过命令行工具,修复异常. 一,使用net命令行启动数据库 通过net start 命令启动 ...

  5. Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件

    """ 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 Python对Selenium封装浏览器调用 ------b ...

  6. muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制

    目录 muduo网络库学习笔记(四) 通过eventfd实现的事件通知机制 eventfd的使用 eventfd系统函数 使用示例 EventLoop对eventfd的封装 工作时序 runInLoo ...

  7. C++ string 类详解

    字符串是存储在内存的连续字节中的一系列字符.C++ 处理字符串的方式有两种,一种来自 C 语言,常被称为 C-风格字符串,另一种是基于 string 类库的字符串处理方式.C 风格字符串的处理可以参考 ...

  8. 利用链式队列(带头节点)解决银行业务队列简单模拟问题(c++)-- 数据结构

    题目: 7-1 银行业务队列简单模拟 (30 分)   设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客 ...

  9. 机器学习初入门01-numpy的基础用法

    一.numpy基础结构 1. numpy.genformtxt('路径名', delimiter = '分割符', dytype = 读取方式如str ):读取一个文件,返回一个numpy.ndarr ...

  10. mgo like的两种写法

    实际上都是围绕正则来写的,看大家喜欢那种写法 package main import ( "fmt" "labix.org/v2/mgo" "labi ...