asp.net应用程序无法连接oracle数据库,2020:ASP连接Oracle数据库问题的解决过程
尽管2020了,但是需求无处不在,ASP连接Oracle数据库问题的解决过程:
注意,本文为梦回大唐版本,盗图严重,纰漏难免,欢迎举报。
一、环境
数据库端:Windows Server 2008 R2 64位企业版 + Oracle 11.2.0.1.0 64位 企业版
客户端:Windows Server 2008 R2 64位企业版 + IIS +ASP
二、连接Oracle
方式一:失败。
Oracle官网下载的客户端和ODBC驱动:
instantclient-basic-windows.x64-11.2.0.4.0
instantclient-odbc-windows.x64-11.2.0.4.0
Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC 安全更新_x64
(ODBC需要,微软这个挺难找,只能找到更新,但是适用)
安装过程大概是这样:
装Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package x64
将instantclient-basic和instantclient-odbc压缩包里面的文件都放到一个文件夹。如:C:\oracle
创建C:\oracle\network\admin\tnsnames.ora,内容如下:
APPORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.30)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
右键odbc_install.exe以管理员运行,安装odbc驱动。
创建环境变量:
添加到系统的环境变量Path:C:\oracle;C:\oracle\bin
添加:TNS_ADMIN 值:C:\oracle\network\admin\tnsnames.ora
创建ODBC:
(默认运行的是64位)开始-管理工具-数据源(ODBC)-系统DSN-添加-选择刚安装的instantclient驱动。
配置图,盗用一下其他人的:
DataSourceName:新建一个连接名,在ASP页面连接字符串时会使用此连接名。
TNSserviceName:IP/实例名,中间使用斜杆分隔。
User ID:数据库登录名。
点击“Test Connection”按钮,输入密码测试成功。个人觉得配置完这个,TNS_ADMIN是不是没用处,但没有验证。方式三没有使用ODBC,才有用TNS_ADMIN。
打开IIS,添加测试网站:
1.测试网站选择Classic .Net AppPool应用程序池
2.Classic .Net AppPool应用程序池启用32应用程序支持(True)
3.ASP开启调试属性,将错误发送到浏览器True
4.添加连接数据库测试页面,测试页面为UTF-8编码格式:
Dim connStr
Dim conn,sql,rs
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "DSN=web32;UID=YCWEB;PWD=12345678;"
if err then
err.clear
set Conn=Nothing
Response.Write "数据库连接出错,"
Response.End
else
Response.Write "数据库连接成功,"
End If
sql = "select * from v_djkscjb where xh=201510300"
Set rs = conn.Execute(sql)
Do Until(rs.eof)
For i=0 to rs.fields.count-1
Response.Write (rs.fields(i))
Response.Write ("
")
Next
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
打开后报:驱动架构不符错误之类。
猜测:IIS和ASP是32位的,不能使用64架构驱动。于是转战方式二。
方式二:不完美。
首先,去ODBC源删除64位的系统DSN
卸载odbc的64位驱动,在C:\oracle目录下右键odbc_uninstall.exe以管理员运行。
清空C:\oracle下的所有文件。
Oracle官网下载的32位客户端和ODBC驱动:
instantclient-basic-nt-11.2.0.4.0
instantclient-odbc-nt-11.2.0.4.0
Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC 安全更新_x86
(odbc驱动要用到,微软这个挺难找,只能找到更新,但是适用)
客户端和驱动安装过程同64位。略。
创建ODBC:
开始-管理工具-数据源(ODBC)是64位的,肯定不行,32位的在这里:
C:\Windows\SysWOW64\odbcad32.exe
运行后配置和64位一样操作。
IIS配置同64位。
打开测试页面,显示连接成功。但,Oracle返回来的数据中包含中文,这些中文都乱码(变成????)。
苦苦切换编码,无法解决。但是网上有人遇到同样问题,言语间是通过换连接方式解决了中文乱码问题,但是没有给出具体方法。于是就网上寻找还有其他方式?就找到了方式三。
方式三:完美。
首先是找到OO4O ( Oracle Object For OLE ),但是oracle 11.2版本后就没有了。刚好我的是11.2,可以使用。但是本文最后没有使用这个。
因为网上搜索时找到这样一种方式:
set adocon=Server.Createobject("adodb.connection")
adocon.open"Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"
OraOLEDB引起了我的注意,搜索后是,这个是ODAC的一个组件。
Oracle 数据访问组件 (ODAC) 全称:Oracle Data Access Components。
ODAC Components:
Oracle Developer Tools for Visual Studio
Oracle Data Provider for .NET
Oracle Providers for ASP.NET
Oracle Database Extensions for .NET -- available in 12.2 and earlier for upgrade only
Oracle Provider for OLE DB
Oracle OLAP Provider for OLE DB -- 18c and higher
Oracle Services for Microsoft Transaction Server
Oracle ODBC Driver
Oracle SQL*Plus
Oracle Instant Client
其中有个组件,Oracle Provider for OLE DB。就是这个。
官方下载的是ODAC 11.2.0.3.20版本。多次搜索后发现官方还有ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy下载,ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy里面还有OO4O驱动,但是我们不使用这个。
当然,我们下载的都是32位的版本,因为最后已经成功,64位没有测试。
这次我使用的是ODAC 11.2 Release 6 (11.2.0.4.0) Xcopy 32位。
里面的readme很详细告诉你怎么安装。
instantclient_11_2:这是Oracle客户端,所有组件的运行都依赖于这个客户端;
oledb:这是OLE DB组件
oo4o:是OO4O组件。
asp.net:这是ASP.NET2组件
asp.net4:这是ASP.NET4组件
odp.net4:这是.NET4组件
odp.net20:这是.NET2组件
oramts:这是Oracle的MTS服务
network:它是用来存放tnsnames.ora文件的,要安装后才能用。
首先,去ODBC源删除32位的系统DSN
卸载odbc的32位驱动,在C:\oracle目录下右键odbc_uninstall.exe以管理员运行。
清空C:\oracle下的所有文件。并去除相关环境变量设置。
在cmd中cd到这个目录:输入 install.bat all c:\oracle odac 省麻烦,安装了所有组件。
c:\oracle是安装目录,odac是写注册表用(名字任意)
单个组件这样装:
install.bat oledbc:\oracle odac false
这时就只会安装oledb,而不会把oledb和instantclient_11_2也装上。
创建环境变量(路径一样,上面也可不清除):
添加到系统的环境变量Path:C:\oracle;C:\oracle\bin
添加:TNS_ADMIN 值:C:\oracle\network\admin\tnsnames.ora
三种方式的tnsnames.ora都是一样的。
直接到了IIS这部,配置和其他方式都一样。
测试页面配置要修改:
set conn=server.createobject("adodb.connection")
dns="Provider=OraOLEDB.Oracle;User ID=YCWEB;Password=12345678;Data Source=APPORCL"
conn.Open dns
SQL="select XH,XM,XN,XQ,KCMC,ZSCJ from v_ggdjkscjb where xh=201510300"
'学号XH,姓名XM,学年XN,学期XQ,课程名称KCMC,成绩ZSCJ
set rs=conn.execute(SQL)
Do Until(rs.eof)
For i=0 to rs.fields.count-1
Response.Write (rs.fields(i))
Response.Write ("
")
Next
rs.MoveNext
Loop
SQL2="select XH,XM,XN,XQ,KCMC,ZSCJ,BKCJ from v_cyyjb where xh=201510300"
'学号XH,姓名XM,学年XN,学期XQ,课程名称KCMC,期末成绩ZSCJ,补考成绩BKCJ
set rs2=conn.execute(SQL2)
Do Until(rs2.eof)
For i=0 to rs2.fields.count-1
Response.Write (rs2.fields(i))
Response.Write ("
")
Next
rs2.MoveNext
Loop
rs.Close
set rs=nothing
rs2.Close
set rs2=nothing
conn.close
set conn=nothing
%>
注意:Data Source=APPORCL,跟tnsnames.ora一样。
重启服务器。
重启服务器。
重启服务器。
打开测试页面,中文显示正常了。
三、总结:
ODBC不靠谱,
OO4O已退出,
OLEDB显示器。
asp.net应用程序无法连接oracle数据库,2020:ASP连接Oracle数据库问题的解决过程相关推荐
- 建立asp.net应用程序提示:无法与服务器建立连接
建立asp.net应用程序时提示 "尝试建立Web项目或打开位于URL:"Http://localhost/WebApplication1"的Web项目时,Web服务 ...
- airflow连接mysql错误_安装Airflow遇到的问题以及解决过程
sudo pip install airflow ``` ### 2.安装Airflow #### 2.1第一次安装airflow ``` sudo pip install airflow ``` # ...
- [转载]优化ASP.NET应用程序性能研究与探讨
文章来源:Internet 网站的性能对于ASP.NET程序开发人员来说非常重要.一个优秀的网站虽然有美观的页面设计,完善的服务功能,但是打开网页时有长时间的延迟,用户最终将会无法忍受.尤其对于大型的 ...
- ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序
本文是本系列文章第一篇,主要通过建立一个默认ASP.NET MVC项目来引出与ASP.NET MVC相关的功能,由于ASP.NET MVC一个简单的模板就具备了数据库操作.身份验证.输入数据校验等功能 ...
- 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性
概述 在阅读本文之前,兄弟们请先注意两点: 我们现在谈的是传统ASP.NET应用程序的可测试性,而不是ASP.NET MVC应用程序的可测试性. 我们现在谈的是"增强",而不是说传 ...
- asp.netcore oracle,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...
Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...
- asp连接oracle 服务端,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...
Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...
- oracle数据库连接时报12514_连接Oracle数据库时报ORA-12541:TNS:无监听程序的图文解决教程...
在用PL/SQL Developer等客户端工具连接oracle服务器时出现ORA-12541:TNS:无监听程序的错误,如下图: 发现原来是oracle的监听没有启动,重启监听后就连接成功了,下面跟 ...
- mvc移动创建oracle表,使用 ASP.NET MVC (C#)在15分钟内创建电影数据库应用程序 | Microsoft Docs...
使用 ASP.NET MVC 在 15 分钟内创建电影数据库应用程序 (C#)Create a Movie Database Application in 15 Minutes with ASP.NE ...
最新文章
- 201521123079 《Java程序设计》第1周学习总结
- 将Hexo同时部署在github和腾讯云开发者平台或Coding初级实践教程
- 视屏接口系列(一 ) ----------VGA(对与数信号显示器要加载A/D,延时拖尾、质量下降)...
- mysql/mariadb应该使用utf8mb4而不是utf8
- Tomcat Get请求的巨坑
- 【数据结构与算法】内部排序之三:堆排序(含完整源码)
- SPOJ COT Count on a tree 主席树
- 设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线的和,例如以下魔方,各行各列及两对角线值的和都是64.
- Python 字符串语法,for
- 用Java来写常见的排序算法
- OSChina 周二乱弹 —— 从此鲜肉成屌丝
- Qt Creator 4.9 发布
- 飞机大战小游戏3.0
- Python新闻网站项目-8.Django前端Web部署
- 智慧校园建设方案!高校统一数据中心解决方案
- 51单片机教程__模块化编程
- 二期:Combined Scorecards
- Matlab数字信号处理的仿真系统(具有界面)
- 中国市级食品药品监督管理局将使用区块链技术以保证质量
- 机器学习必备------手把手教你安装sklearn包
热门文章
- PostMan入门使用教程
- 解决phpcms模版设置中不能显示栏目首页模板,栏目列表页模板,内容页模板等下拉菜单选项的问题!...
- linux下查看cpu信息
- java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
- mysql-fron快速写sql语句,SQL优化系列:如何书写高质量SQL语句(一)
- oracle查询最近十条数据_Oracle-查询最近更新的前10条数据
- python打印表格_python 6.7 编写printTable()函数表格打印(完整代码)
- 甜甜的爱情+美食完美情人节海报,PSD分层模板轻松搞定设计,拿去用!
- 设计潮流趋势|背景图案素材,增加设计对比和补充前景元素
- 冬季防御抗疫情宣传插画素材,时刻提醒大家注意