C# 无法连接到C中的Oracle#
我正在尝试在32位控制台应用程序中连接到Oracle。我得到了以下信息。代码(主机、用户名和密码更改除外)如下所示。这是一个简单的双功能项目 任何帮助都将不胜感激 我在Visual Studion 2010 Premium和Oracle 10g中使用C#。我可以使用连接字符串中的信息集与Oracle SQL Developer连接到数据库C# 无法连接到C中的Oracle#,c#,oracle,C#,Oracle,我正在尝试在32位控制台应用程序中连接到Oracle。我得到了以下信息。代码(主机、用户名和密码更改除外)如下所示。这是一个简单的双功能项目 任何帮助都将不胜感激 我在Visual Studion 2010 Premium和Oracle 10g中使用C#。我可以使用连接字符串中的信息集与Oracle SQL Developer连接到数据库 ---------------托斯特林-------------------------- --Oracle.DataAccess.Client.Oracl
---------------托斯特林-------------------------- --Oracle.DataAccess.Client.OracleException位于Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32错误代码、OracleConnection连接、IntPtr opsErrCtx、OpoSqlValCtx*pOpoSqlValCtx、对象src、字符串过程) 位于Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,Oracle 连接接头,IntPtr opsErrCtx,对象src) 在Oracle.DataAccess.Client.OracleConnection.Open()中 在c:\users\maholt\documents\visual studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs中的ConsoleApplication1.Program.GetConnection()处:第61行 ---------------信息---------------------------
第一,Oracle不支持.net 4.0中的10g。您必须使用11.2.0.2或更高版本才能与Oracle支持的版本兼容 第二,问题是您可能没有正确安装ODP.Net。这可能意味着它未安装、已安装到第二个实例,或者在安装过程中无法复制一个或多个文件 我有一些关于这些项目的博客文章,还有我编写的一些连接测试应用程序的链接。请随意使用它们
首先-Oracle不支持.net 4.0中的10g。您必须使用11.2.0.2或更高版本才能与Oracle支持的版本兼容 第二,问题是您可能没有正确安装ODP.Net。这可能意味着它未安装、已安装到第二个实例,或者在安装过程中无法复制一个或多个文件 我有一些关于这些项目的博客文章,还有我编写的一些连接测试应用程序的链接。请随意使用它们
SQL开发人员有效地使用JDBC连接。。。因此,它实际上无法与.NET中发生的情况进行比较:-( 关于Oracle与.NET版本的兼容性-我发现这是一个相当有问题的问题,尤其是因为客户端并不总是可以根据Oracle路线图进行更新
在研究了一些之后,我转而使用-supportEverything,从Oracle 7.3到.NET 2中的11gR2,再到32位和64位,并提供了“直接模式选项”这意味着,如果需要,我可以运行我的应用程序,而不需要在机器上安装任何Oracle客户端…不是附属的,只是一个快乐的客户…SQL Developer有效地使用JDBC连接…因此它与.NET中发生的情况并不具有可比性:-( 关于Oracle与.NET版本的兼容性-我发现这是一个相当有问题的问题,尤其是因为客户端并不总是可以根据Oracle路线图进行更新
在研究了一些之后,我转而使用-supportEverything,从Oracle 7.3到.NET 2中的11gR2,再到32位和64位,并提供了“直接模式选项”这意味着,如果需要,我可以在计算机上不安装任何Oracle客户端的情况下运行我的应用程序…没有关联,只是一个快乐的客户…异常消息是什么?您有一个标题,但似乎没有包含文本。消息是空的吗?异常消息是什么?您有标题,但似乎没有inc我记下了文字。留言是空白的吗?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;
namespace ConsoleApplication1
{
class Program
{
static OracleConnection conn;
static void Main(string[] args)
{
OracleConnection connC = GetConnection();
conn = connC;
simpleQuery();
Console.WriteLine("DONE");
}
public static void simpleQuery()
{
OracleCommand cmd = new OracleCommand("select count(*) as total from console.client");
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
try
{
cmd.Connection.Open();
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(Convert.ToString(reader["total"]));
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
cmd.Dispose();
}
}
public static OracleConnection GetConnection()
{
Oracle.DataAccess.Client.OracleConnection rtn = null;
try
{
string connstr = "Data Source=//10.10.10.10:1521/PRD2_OLTP;User Id=user; Password=pass;";
rtn = new Oracle.DataAccess.Client.OracleConnection(connstr);
if (rtn.State != System.Data.ConnectionState.Open)
{
rtn.Open();
}
}
catch (Exception ee)
{
Console.WriteLine("-------------------------------------------------");
Console.WriteLine("---------------ToString--------------------------");
Console.WriteLine("--" + ee.ToString());
Console.WriteLine("---------------Message---------------------------");
Console.WriteLine("--" + ee.Message);
Console.WriteLine("-------------------------------------------------");
}
return (rtn);
}
}
}