美文网首页
老代码改造,链接Oracle 12c 数据库

老代码改造,链接Oracle 12c 数据库

作者: 百里有声 | 来源:发表于2022-11-07 16:40 被阅读0次

老系统中用的是Oracle10g,站点服务器上安装了Oracle10g的客户端。
现在数据库换成了oracle12c,站点服务器上不在安装12c的客户端,用instantclient_12_1来链接12c数据库。
文章描述了配置过程

准备工作

1:下载 instantclient-basic-windows.x64-12.1.0.2.0.zip 并解压缩到一个稳定的目录


解压缩后

2: 从Oracle12c的服务端程序安装目录里拷贝两个文件出来 OraOps12.dll 和 Oracle.DataAccess.dll


OraOps12.dll
image.png
3:将OraOps12.dll 和 Oracle.DataAccess.dll 两个文件复制到 instantclient_12_1 下
image.png

站点修改

1:web.config中的配置,注意每一项都要有,配置了DllPath 就不需要在系统环境变量里添加Path路径了

<configSections>
        <section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </configSections>

    <connectionStrings>
        <add name="MyConnectionOne" providerName="Oracle.DataAccess.Client" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXXXX)(PORT=1521)))(CONNECT_DATA=(sid =orcl)));User Id=XXXXXX;Password=XXXXXX"/>
    </connectionStrings>

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

    <oracle.dataaccess.client>
        <settings>
            <add name="DllPath" value="D:\09Dev\instantclient_12_1\"/>
        </settings>
    </oracle.dataaccess.client>

2:站点程序上添加Oracle.DataAccess.dll引用,确认版本一致


image.png

3:测试代码 前端页面,default.aspx

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <br />
    <asp:Literal ID="idlist" runat="server"></asp:Literal>
</asp:Content>

4:测试代码 default.aspx后台

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Data.Common;
namespace WebApplication1
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            string strSql = "select * from testtest";
            using (IDataReader reader = GetDataReader(strSql))
            {
                while (reader.Read())
                {
                    string id = reader[1].ToString();
                    idlist.Text = idlist.Text + id + "<br/>";
                }
            }

        }
        public DbConnection GetConnection()
        {
            string providerName = "Oracle.DataAccess.Client";
            string strConnection = ConfigurationManager.ConnectionStrings["MyConnectionOne"].ToString();            
            System.Data.Common.DbProviderFactory dbFactory = System.Data.Common.DbProviderFactories.GetFactory(providerName);
            DbConnection conn = dbFactory.CreateConnection();
            conn.ConnectionString = strConnection;
            conn.Open();
            return conn;
        }

        public IDataReader GetDataReader(string SQL)
        {
            var conn = GetConnection();
            var cmd = conn.CreateCommand();
            cmd.CommandText = SQL;
            IDataReader Rs = cmd.ExecuteReader();
            return Rs;
        }
    }
}

最终呈现

image.png
image.png

相关文章

网友评论

      本文标题:老代码改造,链接Oracle 12c 数据库

      本文链接:https://www.haomeiwen.com/subject/ufwwtdtx.html