如何在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>
- 把里面的
HOST、PORT、SERVICE_NAME、User Id、Password替换成你自己的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




