zoukankan      html  css  js  c++  java
  • 如何不使用Oracle客户端库连接数据库?

    在用连接oracle数据库的时候,经常会碰到如下问题:

    VS2010 + Oracle driver: ORA-12154: TSN:could not resolve the connect identifier specified

    比较好的解决方案,是引用oracle dll 文件连接oralce数据库,而不用依赖于安装的oralce client.

    步骤如下:

    1. 从'Oracle Data Provider for .NET' 获取DLLs包

     可以到 http://www.oracle.com/technetwork/topics/dotnet/index-085163.html 下载oracle 安装文件。

    2.引用DLLS到项目

    搜索Oracle客户端的安装目录,并将下列四个DLL复制到项目的Bin文件夹:

    • Oracle.DataAccess.dll
    • oci.dll
    • oraciicus11.dll
    • OraOps11w.dll

    引用dll文件,Project --> Add Reference..., 点击 Browse 选择 Oracle.DataAccess.dll 文件.

    Oracle.DataAccess.dll 的Copy to Output Directory属性中,设置 Copy always.

    3.用全连接字符串

    为了不必担心应用程序部署时TNS的设置问题,可以用整个连接字符串如下:

    Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=servername)(PORT=‌​1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));User Id=username;Password=********;
    

    例如:

    using System;
    using System.Data;
    using Oracle.DataAccess.Client;
    
    static class Program
    {
        [STAThread]
        static void Main()
        {
            TestOracle();
        }
    
        private static void TestOracle()
        {
            string connString = 
                "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)" + 
                "(HOST=servername)(PORT=‌​1521)))" +
                "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)));"+ 
                "User Id=username;Password=********;";
            using (OracleConnection conn = new OracleConnection(connString))
            {
                string sqlSelect = "SELECT * FROM TEST_TABLE";
                using (OracleDataAdapter da = new OracleDataAdapter(sqlSelect, conn))
                {
                    var table = new DataTable();
                    da.Fill(table);
    
                    if (table.Rows.Count > 1) 
                        Console.WriteLine("Successfully read oracle.");
                }
            }
        }
    }
    

    注:

     如果系统是X64位,用32的Oracle.DataAccess.dll 可能会出现如下问题:

    Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.
    

    解决方法:

    设置Pool支持32位,如下:

      

  • 相关阅读:
    HTML5 程序设计笔记(一)
    前端插件小结
    Android 学习手札(三) 视图(View)
    Python32期【pthon基础 day 3】01 早测试
    Python32期【pthon基础 day 2】04 数据类型1-2
    Python32期【pthon基础 day 2】03 数据类型2
    Python32期【pthon基础 day 2】02 数据类型1
    Python32期【pthon基础 day 2】01 早测试
    Python32期【pthon基础 day 1】03 小作业
    Python32期【pthon基础 day 1】02 注释2
  • 原文地址:https://www.cnblogs.com/luke-lu/p/3502096.html
Copyright © 2011-2022 走看看