You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在ASP.NET MVC应用中通过Microsoft JDBC Driver 6.0 for SQL Server连接Oracle 9数据库?

兄弟,先给你掰正一个关键误区:Microsoft JDBC Driver 6.0 for SQL Server是专门给SQL Server用的,完全没法连Oracle,可别在这上面浪费时间啦!下面给你一步步说ASP.NET MVC连接Oracle 9的正确操作,都是实战过的步骤:

步骤1:安装Oracle官方.NET驱动(ODP.NET)

因为你用的是.NET平台(ASP.NET MVC),必须用Oracle针对.NET推出的官方驱动ODP.NET,这是最稳定靠谱的选择:

  • 如果你用的是Visual Studio 2019及以后版本,直接通过NuGet安装最省心:
    打开NuGet包管理器控制台,执行命令:
    Install-Package Oracle.ManagedDataAccess

    划重点:这个是纯托管驱动,不需要额外安装本地Oracle客户端,对新手友好,而且官方明确支持Oracle 9i及以上版本,亲测兼容没问题

  • 要是你偏好非托管驱动,也可以下载Oracle Data Access Components (ODAC),但需要配置本地Oracle客户端,步骤繁琐很多,新手优先选托管驱动。
步骤2:配置数据库连接字符串

打开项目的Web.config,找到<connectionStrings>节点,添加Oracle专属的连接字符串:

<connectionStrings>
  <add name="OracleDbContext" 
       connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=你的Oracle服务器IP)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=你的数据库服务名)));User Id=你的数据库用户名;Password=你的数据库密码;" 
       providerName="Oracle.ManagedDataAccess.Client" />
</connectionStrings>
  • 把里面的HOSTPORTSERVICE_NAMEUser IdPassword替换成你自己的Oracle 9数据库信息
  • 如果你的Oracle用的是SID而非服务名,把SERVICE_NAME改成SID即可,比如(CONNECT_DATA=(SERVER=DEDICATED)(SID=你的数据库SID))
步骤3:编写数据访问代码(示例)

可以用ADO.NET直接操作(EF对Oracle 9的支持有限,新手先从ADO.NET入手更稳妥),比如写一个简单的数据访问类:

using Oracle.ManagedDataAccess.Client;
using System.Data;

public class OracleDataHelper
{
    private readonly string _connString = System.Configuration.ConfigurationManager.ConnectionStrings["OracleDbContext"].ConnectionString;

    public DataTable GetTableData(string tableName)
    {
        var resultTable = new DataTable();
        using (var conn = new OracleConnection(_connString))
        {
            var sql = $"SELECT * FROM {tableName}";
            using (var cmd = new OracleCommand(sql, conn))
            {
                conn.Open();
                using (var dataAdapter = new OracleDataAdapter(cmd))
                {
                    dataAdapter.Fill(resultTable);
                }
            }
        }
        return resultTable;
    }
}

然后在Controller里调用这个类,把数据传给View:

public ActionResult Index()
{
    var dataHelper = new OracleDataHelper();
    var tableData = dataHelper.GetTableData("你的表名");
    return View(tableData);
}
常见问题提醒
  • Oracle 9是比较老旧的版本,确保你安装的Oracle.ManagedDataAccess版本在12c及以上(这个版本开始全面兼容9i)
  • 如果出现ORA-12514: TNS:listener does not currently know of service requested in connect descriptor错误,先检查服务名/SID是否正确,再确认服务器端的Oracle监听器是否正常运行
  • 确保你的ASP.NET MVC项目的.NET框架版本在4.5及以上,和驱动版本兼容

内容的提问来源于stack exchange,提问作者Mohammad Areeb

火山引擎 最新活动