2015-05-13 125 views
1

我有一個非標準本地Oracle DB來,我可以用我的SQLDeveloper 使用連接進行連接:SQL連接C#

username = system 
password = orcl 
hostname = localhost 
port = 1521 
SID = ORCL 

但是當我試圖做到這一點的代碼

try 
      { 
       SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 

       builder.DataSource = "localhost"; 
       builder.InitialCatalog = "HR_ORCL"; 
       builder.UserID = "system"; 
       builder.Password = "orcl"; 
       string connectionString = "Server=(local);Database=HR_ORCL;User ID=system;Password=orcl"; 
       using (SqlConnection connection = new SqlConnection()) 
       { 
        connection.ConnectionString = builder.ConnectionString; 

        connection.Open(); 

        Console.WriteLine("State: {0}", connection.State); 
        Console.WriteLine("ConnectionString: {0}", 
         connection.ConnectionString); 
       } 
      } 
      catch(Exception error) 
      { 
       System.Console.WriteLine(error.Message); 
      } 

我得到一個錯誤

"provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL server"

我到底做錯了什麼?

+0

你的問題是? –

+0

我添加了一個錯誤。 – Ghostleg

+5

您正在使用SQL服務器類連接到Oracle數據庫。您應該爲Visual Studio安裝ODAC和ODT,並使用Oracle託管驅動程序。 http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html –

回答

0

由於正確地斯特凡說,你需要下載並安裝ODP from this site

一旦安裝完成後,你需要添加組件Oracle.DataAccess.dll的參考。

然後你就可以使用它像這樣:

using System; 
using Oracle.DataAccess.Client; 

class MyClass 
{ 
    OracleConnection con; 
    void Connect() 
    { 
     con = new OracleConnection(); 
     con.ConnectionString = "yourconnectionstring"; 
     con.Open(); 
    } 

    void Close() 
    { 
     con.Close(); 
     con.Dispose(); 
    } 

    static void Main() 
    { 
     //some code 
    } 
} 
0

SqlConnection是專門用於SQL Server的ADO.NET類型。它不會與其他RDBMS一起工作。

如果要連接到Oracle數據庫,則需要使用類似System.Data.OracleClient.OracleConnection(和Oracle風格的連接字符串)的內容。

注意:儘管.NET框架包含適用於Oracle的ADO.NET類型,但這些類型可能已過時(或至少不如其效能和功能完整),建議您下載並安裝與Oracle分開的驅動程序。