C# 如何连接到Oracle数据库

C# 如何连接到Oracle数据库,c#,oracle,C#,Oracle,我正在使用以下代码连接到oracle服务器。我需要特别使用OdbcConnection类,因为我正在使用此方法增强当前连接到SQL Server的现有应用程序。因此,我也必须对其他DBMS使用相同的方法 我已尝试使用以下代码: const string ConnectionString = @"SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MachineName.Domain.com)(PORT=1521))(CONNECT_DATA=(SER

我正在使用以下代码连接到oracle服务器。我需要特别使用OdbcConnection类,因为我正在使用此方法增强当前连接到SQL Server的现有应用程序。因此,我也必须对其他DBMS使用相同的方法

我已尝试使用以下代码:

const string ConnectionString = @"SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MachineName.Domain.com)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=orcl.Domain.com)));uid=system;pwd=user";

using (OdbcConnection connection = new OdbcConnection(ConnectionString))
    {
    connection.Open();
    }
但是我在调用Open()方法时遇到一个异常,如下所示:

“找不到错误[IM002][Microsoft][ODBC驱动程序管理器]数据源名称,并且未指定默认驱动程序”

你知道我做错了什么吗?

看看

您的连接字符串应如下所示:

var DB = @"SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MachineName.Domain.com)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=orcl.Domain.com)))";
string ConnectionString = "Driver={Oracle in OraClient11g_home1};Dbq=" + DB + ";uid=system;pwd=user;"
您的计算机上的驱动程序名称可能不同。您也可以使用Microsoft的ODBC驱动程序(
driver={MicrosoftODBCforOracle};Server=…
),但是这种驱动程序已经过时了

实际上我更喜欢DbConnectionStringBuilder(甚至是
OdbcConnectionStringBuilder


我看不出有人试图回答这个问题。你“回答”的目的是什么?您至少应该解释一下您的代码,仅仅粘贴一些代码行很少被认为是有用的。
var str = new DbConnectionStringBuilder(true);
str.Add("Driver", "Oracle in OraClient11g_home1");
str.Add("Dbq", @"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MachineName.Domain.com)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=orcl.Domain.com)))");
str.Add("Uid", "system");
str.Add("Pwd", "user");
string ConnectionString = str.ConnectionString;
///Your connection string should be like           
string str = Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = abc )(PORT = 123))(CONNECT_DATA =(SID = xyz)));User Id=abc_xyz;Password=111;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=600;Incr Pool Size=5; Decr Pool Size=2;validate connection=true;

   using (OracleConnection con = new OracleConnection(str))
        {
            using (OracleCommand cmd = con.CreateCommand())
            {
                if (con.State != ConnectionState.Open)
                {
                    con.Open();
                }
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = RoutineConstant.Text;
                cmd.BindByName = true;

                cmd.ExecuteNonQuery();
                if (cmd.Parameters["Value"].Value != null && cmd.Parameters["Value"].Value != DBNull.Value)
                {
                    return Convert.ToDecimal(cmd.Parameters["Value"].Value.ToString());
                }
            }
         }