利用VS2010(C#)如何连接Oracle11g?

kele2005 2010-07-08 04:12:54
我本机系统是Win7,64位的,装有Oracle11g的客户端,
连接语句:Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));Persist Security Info=True;User Id=UserName; Password=UserPwd;

调试执行到创建数据库连接时总出现如下错误:
"Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed."

请问有什么办法解决?
...全文
3490 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
arestoruk 2011-07-01
  • 打赏
  • 举报
回复
oracle10G升级到11202 后遇到sql2008连接11g的问题

Microsoft (R) SQL Server Execute Package Utility Version 10.0.2531.0 for 32-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved. Started: 7:49:09 AM Error: 2011-06-30 07:49:13.27 Code: 0xC0047062 Source: DFMS ALL Script Component [2182] Description: System.InvalidOperationException: Internal .Net Framework Data Provider error 30. at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e) at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PrimeOutput(Int32 outputs, Int32[] outputIDs, PipelineBuffer[] buffers) at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPrimeOutput(IDTSManagedComponentWrapper100 wrapper, Int32 outputs, Int32[] outputIDs, IDTSBuffer100[] buffers, IntPtr ppBufferWirePacket) End Error Error: 2011-06-30 07:49:13.29 Code: 0xC0047038 Source: DFMS ALL SSIS.Pipeline Description: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "Script Component" (2182) returned error code 0x80131509. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 7:49:09 AM Finished: 7:49:13 AM Elapsed: 4.187 seconds. The package execution failed. The step failed.
arestoruk 2011-07-01
  • 打赏
  • 举报
回复
你可以尝试修改这段连接字串:
public static string connectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + ProgramInfo.Dbip + ")(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=" + ProgramInfo.Dbname + ")));User Id=" + ProgramInfo.Username + "; Password=" + ProgramInfo.Password + ";Unicode=True ";//

把这段Unicode=True 删除掉,可能会可以
目前还没确认这个是不是跟ORACLE11GDB对这段连接字串的判断参数有关。
at3375 2010-09-11
  • 打赏
  • 举报
回复
瓜娃子,连引用都不会,那么而简单的东西,拿给你们说得那么复杂,懒得告诉你
kele2005 2010-07-18
  • 打赏
  • 举报
回复
楼上提的问题,很好解决,配置管理器中把编译平台改为anyCpu就行了,我的问题是,装了64位的客户端,提示不能访问
cc5258 2010-07-16
  • 打赏
  • 举报
回复
哎,我也是这个问题。
郁闷的。
------------------
你装的是32位客户端,编译的程序是64位的或anycpu的,在64位系统上就是64位的。
解决方法是把程序编译位32位的或者安装64位的客户端

64位系统,32位客户端,我想编译程32位的,要怎么处理,配置管理器中么?怎么设置啊?
-----------------
kele2005 2010-07-13
  • 打赏
  • 举报
回复
这几天按照楼上各位提供的办法,一一试过之后,错误依然如故……
soaringbird 2010-07-10
  • 打赏
  • 举报
回复
32 64都行,但你的编译选项要与其一致
soaringbird 2010-07-09
  • 打赏
  • 举报
回复
添加引用的时候找这个目录(看你的oracle的home目录而定)
C:\app\Administrator\product\11.2.0\client_1\odp.net\bin\2.x\Oracle.DataAccess.dll
kele2005 2010-07-09
  • 打赏
  • 举报
回复
顶一下,等待ing……
kele2005 2010-07-09
  • 打赏
  • 举报
回复
感谢大家的回复,楼上的同志能否详细解说一下,如何引用?
kele2005 2010-07-09
  • 打赏
  • 举报
回复
真够详细的,呵呵,谢谢。
请问一下,你的Win7是64位的吗,本机上装Oracle11g的客户端是64位的还是32位的?
thunderwolf 2010-07-09
  • 打赏
  • 举报
回复
我的环境和你的一摸一样。也是win7 和oracle11g

public abstract class DbServerOra
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + ProgramInfo.Dbip +
")(PORT=1521))) (CONNECT_DATA=(SERVICE_NAME=" + ProgramInfo.Dbname + ")));User Id=" + ProgramInfo.Username + "; Password=" + ProgramInfo.Password + ";Unicode=True ";//
public DbServerOra()
{
}
#region 公用方法

public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = DbServerOra.GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return int.Parse(obj.ToString());
}
}
public static bool Exists(string strSql)
{
object obj = DbServerOra.GetSingle(strSql);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}

public static bool Exists(string strSql, params OracleParameter[] cmdParms)
{
object obj = DbServerOra.GetSingle(strSql, cmdParms);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
#endregion

#region 执行简单SQL语句

/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand(SQLString,connection))
{
try
{
connection.Open();
int rows=cmd.ExecuteNonQuery();
return rows;
}
catch(System.Data.OracleClient.OracleException E)
{
connection.Close();
throw new Exception(E.Message);
// PubCommand.writeExceptionMsg("数据库", E);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
}


其中 HOST 是oracle 所在的机器名或者IP,本地也可以写自己的IP。
SERVICE_NAME: 是数据库的实例
User Id:用户名
kele2005 2010-07-09
  • 打赏
  • 举报
回复
我需要答案呀……
kele2005 2010-07-09
  • 打赏
  • 举报
回复
又沉了……
kele2005 2010-07-09
  • 打赏
  • 举报
回复
持续等待……
liherun 2010-07-09
  • 打赏
  • 举报
回复
10克拉??
kele2005 2010-07-09
  • 打赏
  • 举报
回复
按照楼上说的,我删除了原来的引用,添加了新的引用,在web.config文件中出现了如下语句:
“<add assembly="Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89B483F429C47342"/>”
点击调试运行,报上边的语句出错,原因是:
“Could not load file or assembly 'Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. 系统找不到指定的文件”
mail_ricklee 2010-07-08
  • 打赏
  • 举报
回复
Oracle 11g R2 Client X64
ODP.Net
Oracle.DataAccess.dll 2.112.1.0
soaringbird 2010-07-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 soaringbird 的回复:]

你装的是32位客户端,编译的程序是64位的或anycpu的,在64位系统上就是64位的。
解决方法是把程序编译位32位的或者安装64位的客户端
[/Quote]

找到odp.net下的dll,直接引用
加载更多回复(9)
Delphi XE2 正式版的破解程序,有效哦。 Delphi XE2 官方完整 delphicbuilder_xe2_win_dl.iso下载地址: http://altd.embarcadero.com/download/radstudio/xe2/delphicbuilder_xe2_win_dl.iso 文件大小: 2.33G MD5: de8b9f897e2ad678643b64898470b707 Delphi Prism XE2 - ISO 1.28G http://altd.embarcadero.com/download/prism/xe2/prism_xe2_win.iso RadPHP XE2 - ISO 343M http://altd.embarcadero.com/download/radphp/xe2/radphp_xe2_win.iso 建议大家用迅雷下载 ************************************** 英巴卡迪诺发布新版RAD Studio XE2开发工具套件 日前,英巴卡迪诺宣布发布新版RAD Studio XE2软件开发工具套件,新版包含了10多年来最深入全面的特性升级。RAD Studio XE2中包含了新版本的Delphi、C++Builder、Prism和RadPHP。主要特性包括完整的Delphi 64位Windows支持,通过全新的FireMonkey富商业应用平台支持Mac OSX和iOS,以及通过RadPHP XE2支持安卓web和移动应用开发。 对Delphi XE2和C++Builder XE2来说,一个极其重要的新特性就是FireMonkey,业界第一款用于创建商业软件的原生的能全面利用到CPU和GPU计算能力的富应用平台。使用 FireMonkey,Delphi和C++Builder开发人员能开发出视觉绚丽的高清和3D应用程序,并与后台的企业级数据库如Oracle、微软 SQL Server、IBM DB2、Sybase和其他数据库互联互通。FireMonkey应用以原生方式运行在Windows PC和Mac上,可以完全利用到现代GPU的处理能力,以不可置信的细节处理能力和优异的性能表现展现数据和用户界面。FireMonkey还可以使 Delphi XE2用户为移动(iOS)设备创建原生的高清和3D应用程序。 Delphi和C++Builder为应用开发提供原生开发方式,而RadPHP XE2则支持web开发和移动设备应用的开发。使用RadPHP XE2,开发人员可以轻松为移动智能电话和平板电脑创建支持触碰和UI优化的web应用。开发人员可以部署他们的移动Web应用为原生移动应用到苹果公司的iOS应用商店和安卓的应用市场。在他们的移动Web应用中,可以直接访问移动设备的硬件,如相机、GPS和重力感应器。 其他新增特性包括: Delphi XE2 和C++Builder XE2 Delphi XE2包括完整的Windows 64位对FireMonkey、编译器、调试器、RTL 和VCL的支持; dbExpress具有新的对InterBase XE, FireBird 2.5, SQL Anywhere 12 和ODBC的连接能力; 新的DataSnap移动连接器,带有原生的平台组件和示例以创建从移动客户端到Delphi DataSnap服务器的连接,支持安卓(Java), iOS (Objective C), 黑莓(Java) 和Windows Phone 7 (C#); 新增和更新的扩展工具,包括FastReport,用于快速设计和生成报表;Documentation Insight,用于Delphi的源代码文档工具; TeeChart、IBX、InstallAware、IP*Works、Aqtime、FinalBuilder、IntraWeb和Indy 的64位版本。 TeeChart、Indy和FinalBuilder还支持Mac平台; C++Builder XE2中还包含了新的代码审计和QA度量工具; LiveBindings使用户能连接任意类型的信息到任意的FireMonkey用户界面和图形对象上。用户可以绑定实时数据到标准的用户界面控件、高清或3D图形元素上,以创建可视化任意类型数据的崭新方式; RadPHP: 集成式为移动优化的Web开发; 部署应用到Web, iOS, 或安卓; 扩展的Zend框架组件集; Embarcadero Prism: 来自RemObjects的全新的.NET Oxygene编译器; 匿名接口实现; FastReport.net

110,577

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧