32位的VS通过odbc数据源访问64位Oracle

笔者环境:Oracle 11g 64位,win7 64位,vs2005 team版,instantclient-basic 32位 12.0版,instantclient-odbc 32位 12.0版,PLSQLDeveloper11绿色版 32位

为了方便起见,把PLSQLDeveloper一起设置了吧

一、解锁scott账户

Oracle 11g安装之后建议先把scott/tiger用户解锁,以便后面的设置(注意scott账户在12c中已经被删除,创建的新账号必须以C##开头)

把当前用户添加到ora_dba用户组

net localgroup ora_dba [当前用户名] /add
解锁scott账户,#后为注释,不要复制

sqlplus /nolog #不登录进入sqlplus 
conn /as dba #当前用户作为管理员登录
alter user scott account unlock; #解锁默认scott账户
alter user scott identified by tiger; #更改scott的密码为tiger
conn scott/tiger #用scott/tiger登录
select * from emp; #查询

二、安装instantclient

将instantclient-basic和instantclient-odbc解压到同一文件夹下:如F:\instantclient_12_1

将Oracle安装目录(笔者为F:\app\LENOVO\product\11.2.0\dbhome_1\NETWORK\ADMIN\)下的tnsnames.ora复制到F:\instantclient_12_1下

双击odbc_install,安装odbc驱动,安装之后可以在32位odbc数据源中找到名为Oracle in instantclient_12_1的驱动程序

三、配置PLSQLDeveloper

双击PLSQLDeveloper中的plsqldev.exe,登录界面点取消,进入主界面Tools-->Preferences

Oracle Home填:F:\instantclient_12_1

OCI library填:F:\instantclient_12_1\oci.dll

新建批处理文件start.bat内容如下:

@echo off
set path=F:\instantclient_12_1
set ORACLE_HOME=F:\instantclient_12_1
set TNS_ADMIN=F:\instantclient_12_1
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
start plsqldev.exe
保存后双击start.bat启动PLSQLDeveloper

Username填:scott
Password填:tiger

Database填:ORCL(如果安装时没有改的话默认是这个)

点击OK

进入主界面后,把左边Object窗口最大化,选择CURRENT USER、My objects

展开Table可以找到默认创建的4个表,对表右键-->Query可以得到表中的数据

四、配置odbc数据源

在64位windows系统中从控制面板默认打开的是64位数据源,其路径为:C:\Windows\System32\odbcad32.exe,64位系统的32位数据源的路径为C:\Windows\SysWOW64\odbcad32.exe

在32位windows系统中只有一个数据源,其路径为C:\Windows\System32\odbcad32.exe

所以我们需要打开C:\Windows\SysWOW64\odbcad32.exe配置,

但是我们首先需要配置几个环境变量

环境变量设置
原来有的变量:ORACLE_HOME=F:\app\LENOVO\product\11.2.0\dbhome_1
1.将F:\instantclient_12_1添加到Path
2.将TNS_ADMIN改为OCI的ora文件如F:\instantclient_12_1,由于在这个例子中是直接复制过来的可以不用设置(不设置时会在%ORACLE_HOME%/network/admin/tnsnames.ora路径找,如果ORACLE_HOME也没有设置,那么它会在TNS_ADMIN的目录寻找ora文件)
3.将NLS_LANG改为SIMPLIFIED CHINESE_CHINA.ZHS16GBK(或者AMERICAN_AMERICA.ZHS16GBK),如果原来有值就不要改

然后我们打开32为数据源:C:\Windows\SysWOW64\odbcad32.exe

系统DSN-->添加,选择Oracle in instantclient_12_1,其中Data Source Name和Description随便填,这里都填MYDS,重要的是TNS Services Name默认情况下填127.0.0.1:1521/orcl,格式为:主机名:端口名/实例名,User ID填scott

点击Test Connectiion,在弹出的窗口中输入密码tiger,点击OK,如果出现Connection Succcessful的对话框说明连接成功

五、配置VS2005

打开VS2005,工具-->连接到数据库

点击左侧窗口中的 数据连接-->右键-->添加连接,选择Microsoft ODBC 数据源,点击确定

在弹出的 添加连接 的窗口中

选择使用用户名或使用系统数据源名称,点击刷新,然后选择刚才创建的数据源MYDS,用户名填scott,密码填tiger,点击测试连接,如果弹出窗口显示测试连接成功,说明配置成功。若点击确定,在左侧可以看到具体的表和视图信息。

32位的VS通过odbc数据源访问64位Oracle_第1张图片

6.C#测试代码

由于上面配置的是32位数据源,所以编译平台要从AnyCPU改成x86(AnyCPU在64位系统下编译的是64位程序,使用的是64位的数据源)

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Odbc;
using System.Data.OleDb;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //ODBC连接
            string conString = "DSN=MYDS;uid=scott;pwd=tiger"; //数据源名,用户名,密码
            string sql = "select count(*) from emp"; //emp为orcl实例中的一个表
            OdbcConnection con = new OdbcConnection(conString);
            con.Open();
            OdbcCommand com = new OdbcCommand(sql, con);
            int i = Convert.ToInt32(com.ExecuteScalar());
            Console.WriteLine(i);
            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}
运行结果


你可能感兴趣的:(oracle,64位,vs,instantclient,32位)