• C# 连接Oracle数据库,免安装oracle客户端


    一、方案1

    首先下面的内容,有待我的进一步测试和证实。18.12.20

    被证实了,还需要安装Oracle客户端,或者本机上安装oracle数据库软件。 18.12.20

    1.下载Oracle.ManagedDataAccess.dll

    2.添加到C#引用

    3.命名空间引用

    using Oracle.ManagedDataAccess.Client;

    4. 连接参数的获取

    然后打开Oracle安装的文件夹,以Oracle10为例D:Oracle10NETWORKADMIN nsnames.ora,打开这个文件,会看到

    如果没有请按照图片内容输入即可,host=[主机名称],SERVICE_NAME=[随意取]

    5.完成上述后,连接字符串:

    strConnection = “Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=LocalHost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User ID=XXXX;Password=XXXX;”;

    简单说明一下这个连接字符串,HOST=LostHost|127.0.0.1|主机名三者均可,选择一个就行;

    SERVICE_NAME=[即你刚才在tnsnames中取得名字];

    然后在输入你的Oracle账户名密码即可

    6.测试代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Oracle.ManagedDataAccess.Client;
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            string  strConnection =@ "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=XXX)));Persist Security Info=True;User ID=XXX;Password=XXX;";//以上为一行,显示为三行
            public Form1()
            {
                InitializeComponent();
                connectTest();
            }
            public void connectTest()
            {
                try
                {
                    string str_sql = "SELECT * FROM XXX";
                    OracleConnection conn = new OracleConnection(strConnection);
                    OracleCommand cmd1 = new OracleCommand(str_sql, conn);
                    conn.Open();
                    MessageBox.Show("连接成功!");
                    conn.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                    MessageBox.Show("READSQL");
                }
            }
        }
    }

     二、方案2

    2.1 asp.net远程连接oracle数据库不用安装oracle客户端的方法

    下面是asp.net连接远程Oracle数据库服务器步骤:

    1.asp.net连接oracle服务器需要添加Sytem.Data.OracleClient命名空间。

    2.连接时需要ConnectionString字符串,出现在web.config文件中,如下所示:

    <connectionStrings>
      <add name="ConnectionString" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=你的数据库服务器ip)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=你的数据库实例名)));User ID=scott;Password=tiger;Unicode=True" providerName="System.Data.OracleClient"/>
    </connectionStrings>

    上面的连接字符串添加了tns解析字符串,不需要再有OracleClient,否则需要安装,经过上面两步,在.Net Framework 2.0中远程连接Oracle 10g数据库服务器测试通过。

     

    2.2 PL/SQL Developer不安装客户端连接远程oracle数据库

    1、下载敏捷客户端InstantClient40M左右,选择适合自己的下载,我的是instantclient-basic-win32-11.2.0.1.0.zip ):

    http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html

    2、下载安装PLSQL16M左右):

    http://www.onlinedown.net/soft/4902.htm

    3、解压 instantclient-basic-win32-11.2.0.1.0.zip 到新建文件夹,如  D:/oracleclient/instantclient_11_2

    用文本文档创建tnsnames.ora ,内容大致如下:

    # TNSNAMES.ORA Network Configuration File: /opt/oracle/product/9204/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.          //以上为注释内容,因为我的tnsnames.ora是直接从服务器上download的
    HSSL =                                             //数据库名称
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 218.108.242.30)(PORT = 1521))     //IP和端口
        )
        (CONNECT_DATA =
          (SERVICE_NAME = hssl)               //数据库名称
        )
      )

    用文本文档创建sqlnet.ora ,内容如下:

    NAMES.DIRECTORY_PATH= (TNSNAMES)

    SQLNET.AUTHENTICATION_SERVICES= (NTS)

    到我的电脑、属性、高级、环境变量中添加一个环境变量,变量名为TNS_ADMIN,值为tnsnames.ora文件所在路径,

    例如:D:/oracleclient/instantclient_11_2

     

    4、安装完毕PLSQL后,启动,cancel,依次点击Tools->Preferences->Connection:

    Oracle Home=D:/oracleclient/instantclient_11_2

    OCI library=D:/oracleclient/instantclient_11_2/oci.dll

    重新启动PLSQL即可进入数据库,初次登陆可能存在中文乱码的问题,解决方法如下:

     

    到我的电脑、属性、高级、环境变量中添加一个环境变量:

    变量名:NLS_LANG

    变量值:AMERICAN_AMERICA.ZHS16GBK

    重新连接,即可正常显示中文。

    如果想转换为UTF8字符集,可以赋予“NLS_LANG” “AMERICAN_AMERICA.UTF8,其他编码同上

    参考文章

    C#连接Oracle数据库(无须安装客户端,只须添加dll即可)

    在C#中,远程连接Oracle数据库(不安装客户端,无需多余配置)

    .net远程连接oracle数据库不用安装oracle客户端

     

     

     

  • 相关阅读:
    基于Centos 搭建Jenkins环境
    基于 CentOS 7 搭建 GitLab
    SpringBoot2.x集成WebSocket
    使用jackson序列化json时遇到的坑
    红米3 Flyme5.1.9.5插桩适配长期不定时更新
    教你一招:使用最快速的方式激活windows10专业版
    ubuntu/mint 安装google的拼音输入法
    Ubuntu 14.04.4官方默认更新源sources.list
    Ubuntu(基于Ubuntu)中常用的apt和dpkt命令
    Linux--目录结构解释(转)
  • 原文地址:https://www.cnblogs.com/arxive/p/10147752.html
Copyright © 2020-2023  润新知