[英]Connecting to Oracle Database through C#?
我需要通过Visual Studio 2010连接到Oracle DB(外部)。但我不想在我的机器上安装Oracle。 在我的项目中,我引用了: System.Data.OracleClient 。 但它没有满足需要。 我有一个“Oracle SQL Developer IDE” ,我在其中运行针对oracle db的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下载任何东西。 我应该采取什么措施来实现这一目标?
首先,您需要从此站点下载并安装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();
}
}
您也可以使用Oracle.ManagedDataAccess NuGet包(.NET> = 4.0,数据库> = 10g第2版)。
使用Nuget
Manage NuGet packages...
Browse
选项卡,搜索Oracle
并安装Oracle.ManagedDataAccess
在代码中使用以下命令( Ctrl + 。自动添加using指令)。
请注意,与Java相比,不同的DataSource字符串是不同的。
// 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 + ")");
下一个方法对我来说是使用Visual Studio 2013 Update 4 1-从解决方案资源管理器中右键单击引用,然后选择添加引用2- Assemblies> Framework> System.Data.OracleClient>确定,之后可以使用System.Data自由添加。您的应用程序中的OracleClient和您使用Sql Server数据库一样处理数据库,除了在SqlCommand中将前缀从Sql更改为Oracle成为OracleCommand,例如链接到Oracle XE
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);
}
}
基本上在这种情况下, System.Data.OracleClient需要访问一些不属于.Net的oracle dll。 解决方案:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.