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:\Oracle10\NETWORK\ADMIN\tnsnames.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客戶端

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM