尽管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数据库问题的解决过程相关推荐

  1. 建立asp.net应用程序提示:无法与服务器建立连接

    建立asp.net应用程序时提示   "尝试建立Web项目或打开位于URL:"Http://localhost/WebApplication1"的Web项目时,Web服务 ...

  2. airflow连接mysql错误_安装Airflow遇到的问题以及解决过程

    sudo pip install airflow ``` ### 2.安装Airflow #### 2.1第一次安装airflow ``` sudo pip install airflow ``` # ...

  3. [转载]优化ASP.NET应用程序性能研究与探讨

    文章来源:Internet 网站的性能对于ASP.NET程序开发人员来说非常重要.一个优秀的网站虽然有美观的页面设计,完善的服务功能,但是打开网页时有长时间的延迟,用户最终将会无法忍受.尤其对于大型的 ...

  4. ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序

    本文是本系列文章第一篇,主要通过建立一个默认ASP.NET MVC项目来引出与ASP.NET MVC相关的功能,由于ASP.NET MVC一个简单的模板就具备了数据库操作.身份验证.输入数据校验等功能 ...

  5. 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性

    概述 在阅读本文之前,兄弟们请先注意两点: 我们现在谈的是传统ASP.NET应用程序的可测试性,而不是ASP.NET MVC应用程序的可测试性. 我们现在谈的是"增强",而不是说传 ...

  6. 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 ...

  7. 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 ...

  8. oracle数据库连接时报12514_连接Oracle数据库时报ORA-12541:TNS:无监听程序的图文解决教程...

    在用PL/SQL Developer等客户端工具连接oracle服务器时出现ORA-12541:TNS:无监听程序的错误,如下图: 发现原来是oracle的监听没有启动,重启监听后就连接成功了,下面跟 ...

  9. 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 ...

最新文章

  1. 201521123079 《Java程序设计》第1周学习总结
  2. 将Hexo同时部署在github和腾讯云开发者平台或Coding初级实践教程
  3. 视屏接口系列(一 ) ----------VGA(对与数信号显示器要加载A/D,延时拖尾、质量下降)...
  4. mysql/mariadb应该使用utf8mb4而不是utf8
  5. Tomcat Get请求的巨坑
  6. 【数据结构与算法】内部排序之三:堆排序(含完整源码)
  7. SPOJ COT Count on a tree 主席树
  8. 设计一个4*4魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线的和,例如以下魔方,各行各列及两对角线值的和都是64.
  9. Python 字符串语法,for
  10. 用Java来写常见的排序算法
  11. OSChina 周二乱弹 —— 从此鲜肉成屌丝
  12. Qt Creator 4.9 发布
  13. 飞机大战小游戏3.0
  14. Python新闻网站项目-8.Django前端Web部署
  15. 智慧校园建设方案!高校统一数据中心解决方案
  16. 51单片机教程__模块化编程
  17. 二期:Combined Scorecards
  18. Matlab数字信号处理的仿真系统(具有界面)
  19. 中国市级食品药品监督管理局将使用区块链技术以保证质量
  20. 机器学习必备------手把手教你安装sklearn包

热门文章

  1. PostMan入门使用教程
  2. 解决phpcms模版设置中不能显示栏目首页模板,栏目列表页模板,内容页模板等下拉菜单选项的问题!...
  3. linux下查看cpu信息
  4. java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
  5. mysql-fron快速写sql语句,SQL优化系列:如何书写高质量SQL语句(一)
  6. oracle查询最近十条数据_Oracle-查询最近更新的前10条数据
  7. python打印表格_python 6.7 编写printTable()函数表格打印(完整代码)
  8. 甜甜的爱情+美食完美情人节海报,PSD分层模板轻松搞定设计,拿去用!
  9. 设计潮流趋势|背景图案素材,增加设计对比和补充前景元素
  10. 冬季防御抗疫情宣传插画素材,时刻提醒大家注意