zoukankan      html  css  js  c++  java
  • C#连接oracle连接字符串

    /// <summary>
    /// Oracle 的数据库连接字符串.
    /// </summary>
    private const String connString =
    @"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.210)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=TEST;Password=TEST123";

    那个 192.168.1.210 是 Oracle 数据库服务器的 IP 地址
    1521 是 默认的端口号
    SERVICE_NAME=ORCL 意思是 那个 Oracle 数据库服务是 ORCL
    后面就是 用户名 密码了。

    在.NET中使用System.Data.OracleClient库连接Oracle数据库的步骤

    1.下载并安装Instant Client

    Instant Client可以在Oracle官方网站下载到

    对于Windows,Instant Client有三种版本:

    1)适用于 Microsoft Windows(32位)的 Instant Client

    2)适用于 Microsoft Windows(64位)Itanium的 Instant Client

    3)适用于 Microsoft Windows(x64)的 Instant Client

    可以通过在我的电脑上单击右键菜单中的属性中查看到自己电脑的处理器信息

    由于我的电脑是Win7 64位系统,因此我下载了第三个包

    下载完毕后,解压缩并将里面的bin目录的地址添加到环境变量path中。

    再在环境变量中添加以下属性:

    (我把解压缩的路径放到了D盘,解压缩后的文件夹名为instantclient_12_1)

    NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    TNS_ADMIN=D:instantclient_12_1

    LD_LIBRARY_PATH=D:instantclient_12_1

    2.使用Xshell4远程连接安装有Oracle的RedHat系统

    需要输入以下项:

    1)Name:自己起个名字

    2)Protocol:选择SSH

    3)Host:目标主机IP

    4)Port Number:端口号(22)

    5)登录的用户名/密码

    附:Linux中登录数据库的命令为

    sqlplus 用户名/口令@数据库名

    3.获取连接字符串

    查找ORACLE安装地址

    Linux命令:echo $ORACLE_HOME

    tnsnames.ora位于目录

    $ORACLE_HOME etworkadmin

    用vim打开tnsnames.ora后,发现Oracle数据库的配置如下:

     

    xtcsjk =
        (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 171.0.0.132)(PORT = 1521))
            (CONNECT_DATA =
                (SERVER = DEDICATED)
                (SERVICE_NAME = testdb)
            )
         )
    
     

    根据这个文件,就可以写出连接这个Oracle数据库的连接字符串了

    Data Source=
        (DESCRIPTION=
            (ADDRESS_LIST=
                (ADDRESS=
                    (PROTOCOL=TCP)
                    (HOST=171.0.0.132)
                    (PORT=1521)
                )
            )
            (CONNECT_DATA=
                (SERVICE_NAME=TESTDB)
            )
        );
    Persist Security Info=True;
    User Id=用户名;
    Password=密码
    
    

    4.程序代码

    注:运行下面这段代码,需要

    1)手动添加对库System.Data.OracleClient的引用

    2)在程序集→右键→属性→生成中,把目标平台由AnyCPU改为x64

    否则会报异常BadImageFormatException(兼容性问题)

    3)如果没有完成Instant Client的安装或环境变量的配置,运行时会报异常信息:

    System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    //Method1函数调用的库,需要手动添加引用
    using System.Data.OracleClient;
     
    namespace OracleTest
    {
        class Program
        {
            //从Oracle数据库中读取时间信息
            static void ReadFromOracleTest()
            {
                string conn = string.Concat(
                    @"Data Source=",
                    @"    (DESCRIPTION=",
                    @"        (ADDRESS_LIST=",
                    @"            (ADDRESS=",
                    @"                (PROTOCOL=TCP)", 
                    @"                (HOST=171.0.0.132)",
                    @"                (PORT=1521)",
                    @"            )",
                    @"        )",
                    @"        (CONNECT_DATA=",
                    @"            (SERVICE_NAME=TESTDB)",
                    @"        )",
                    @"    );",
                    @"Persist Security Info=True;",
                    @"User Id=用户名;",
                    @"Password=密码"
                    );
     
                //OracleConnection 被标注为已过时
                OracleConnection oc = new OracleConnection(conn);
     
                try
                {
                    oc.Open();
                    //OracleCommand 被标注为已过时
                    OracleCommand cmd = oc.CreateCommand();
                    cmd.CommandText = "select sysdate from dual";
                    OracleDataReader odr = cmd.ExecuteReader();
                    while (odr.Read())
                    {
                        Console.WriteLine(odr.GetOracleDateTime(0).ToString());
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    oc.Close();
                }
            }
     
            static void Main(string[] args)
            {
                ReadFromOracleTest();
                Console.ReadLine();
            }
        }
    }
    View Code
     

      

    5.运行示例

  • 相关阅读:
    [原]浅谈几种服务器端模型——同步阻塞迭代
    [原] 利用Radix树作为KeyValue 键值对的数据路由
    [原]tornado源码分析系列(四)[buffer事件类IOStream]
    [原]浅谈几种服务器端模型——反应堆模式(基于epoll的反应堆)
    [原]tornado源码分析系列(二)[网络层 IOLoop类]
    [原]浅谈几种服务器端模型——反应堆的设计
    [笔记]Linux内核学习之旅软中断(SIrq)与SMP IRQ Affinity
    [原]tornado源码分析系列(五)[HTTPServer 层]
    [原]浅谈几种服务器端模型——多线程并发式(线程池)
    [原]字典树处理单词集
  • 原文地址:https://www.cnblogs.com/xinweichen/p/4076007.html
Copyright © 2011-2022 走看看