通过C#连接Oracle数据库?

esbemjvw  于 2023-04-29  发布在  Oracle
关注(0)|答案(6)|浏览(186)

我需要通过Visual Studio 2010连接到Oracle DB(外部)。但是我不想在我的机器上安装Oracle。在我的项目中,我引用了:System.Data.OracleClient。但它并没有满足需要。我有一个**“Oracle SQL Developer IDE”**,我在其中对Oracle数据库运行SQL查询。
到目前为止,我有这样的代码:

private static string GetConnectionString()
    {
        String connString = "host= serverName;database=myDatabase;uid=userName;pwd=passWord";
        return connString;
    }

 private static void ConnectingToOracle()
    {
        string connectionString = GetConnectionString();
        using (OracleConnection connection = new OracleConnection())
        {
            connection.ConnectionString = connectionString;
            connection.Open();
            Console.WriteLine("State: {0}", connection.State);
            Console.WriteLine("ConnectionString: {0}",
                              connection.ConnectionString);

            OracleCommand command = connection.CreateCommand();
            string sql = "SELECT * FROM myTableName";
            command.CommandText = sql;

            OracleDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                string myField = (string)reader["MYFIELD"];
                Console.WriteLine(myField);
            }
        }
    }

到目前为止,我读了这些博客:
http://st-curriculum.oracle.com/tutorial/DBXETutorial/index.htm
http://blogs.msdn.com/b/kaevans/archive/2009/07/18/connecting-to-oracle-from-visual-studio.aspx
到目前为止,我还没有从Oracle下载任何东西。我应该采取哪些步骤来实现这一点?

xe55xuns

xe55xuns1#

首先,您需要从这个站点下载并安装ODP http://www.oracle.com/technetwork/topics/dotnet/index-085163.html
安装后,添加程序集Oracle的引用。DataAccess.dll
你可以在这之后去。

using System; 
using Oracle.DataAccess.Client; 

class OraTest
{ 
    OracleConnection con; 
    void Connect() 
    { 
        con = new OracleConnection(); 
        con.ConnectionString = "User Id=<username>;Password=<password>;Data Source=<datasource>"; 
        con.Open(); 
        Console.WriteLine("Connected to Oracle" + con.ServerVersion); 
    }

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

    static void Main() 
    { 
        OraTest ot= new OraTest(); 
        ot.Connect(); 
        ot.Close(); 
    } 
}
of1yzvn4

of1yzvn42#

也可以使用**Oracle.ManagedDataAccess**NuGet包(.NET〉= 4.0,数据库〉= 10g Release 2)。

yzxexxkh

yzxexxkh3#

使用Nuget

1.右键单击项目,选择Manage NuGet packages...
1.选择Browse选项卡,搜索Oracle并安装Oracle.ManagedDataAccess

1.在代码中使用以下命令(Ctrl+.自动添加using指令)。
1.注意不同的DataSource字符串,与Java相比是不同的。

// create connection
OracleConnection con = new OracleConnection();

// create connection string using builder
OracleConnectionStringBuilder ocsb = new OracleConnectionStringBuilder();
ocsb.Password = "autumn117";
ocsb.UserID = "john";
ocsb.DataSource = "database.url:port/databasename";

// connect
con.ConnectionString = ocsb.ConnectionString;
con.Open();
Console.WriteLine("Connection established (" + con.ServerVersion + ")");
taor4pac

taor4pac4#

下一个方法对我来说是Visual Studio 2013 Update 4 1-从解决方案资源管理器右键单击引用,然后选择添加引用2-程序集〉框架〉系统。OracleClient〉OK,然后您可以使用System自由添加。Data.OracleClient在您的应用程序中,处理数据库就像处理Sql Server数据库一样,除了将前缀从Sql更改为Oracle,如在SqlCommand中将其更改为OracleCommand,例如链接到OracleXE

OracleConnection oraConnection = new OracleConnection(@"Data Source=XE; User ID=system; Password=*myPass*");
public void Open()
{
if (oraConnection.State != ConnectionState.Open)
{
oraConnection.Open();
}
}
public void Close()
{
if (oraConnection.State == ConnectionState.Open)
{
oraConnection.Close();
}}

要使用存储过程执行某些命令(如INSERT、UPDATE或DELETE),可以使用以下方法

public void ExecuteCMD(string storedProcedure, OracleParameter[] param)
{
OracleCommand oraCmd = new OracleCommand();
oraCmd,CommandType = CommandType.StoredProcedure;
oraCmd.CommandText = storedProcedure;
oraCmd.Connection = oraConnection;

if(param!=null)
{
oraCmd.Parameters.AddRange(param);
}
try
{
oraCmd.ExecuteNoneQuery();
}
catch (Exception)
{
MessageBox.Show("Sorry We've got Unknown Error","Connection Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
u1ehiz5o

u1ehiz5o5#

在这个例子中,系统。数据。OracleClient需要访问不属于的某些oracle dll。净解决方案:

  • 安装Oracle客户端,并将bin位置添加到Windows或
  • 复制oraociicus10.dll(基本精简版)或aociei10。dll(Basic version),oci.dll,orannzsbb10.dll和oraocci10.dll从Oracle客户端可安装文件夹到应用程序的bin文件夹,以便应用程序能够找到所需的dll
0s7z1bwu

0s7z1bwu6#

上面的代码示例是正确的,但也需要注意包的版本。在包版本不兼容的情况下,代码抛出TimeOut异常。对于dotnet核心或dotnet6或以上使用以下包

<PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.90" />

另一件事是关于数据源,也可以提供以下格式的数据源。

"(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = <HOSTNAME>) (PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = <DBNAME>)))"

相关问题