C# 如何连接到Oracle数据库
我正在使用以下代码连接到oracle服务器。我需要特别使用OdbcConnection类,因为我正在使用此方法增强当前连接到SQL Server的现有应用程序。因此,我也必须对其他DBMS使用相同的方法 我已尝试使用以下代码: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
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());
}
}
}