【发布时间】:2011-11-16 14:29:55
【问题描述】:
如果有任何解决此问题的建议,我将不胜感激。
我不是专业开发人员,而是“继承”了一份报告工作的“业余爱好者”(感谢我对编程的兴趣——“从不做志愿者”的经典例子!)。
我正在尝试从 C# 访问 Oracle 10g 数据库。
为了让事情尽可能简单,我有一个带有单个按钮的裸 WPF 表单。
在按钮的单击事件中,我有以下代码(顺便说一句,在另一台 PC 上设置的早期程序中运行良好)-
using System.Data;
using System.Data.OracleClient;
...
string oraStr1 = "Data Source=(DESCRIPTION=(ADDRESS_LIST =(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SERVICE_NAME=myDB)));Password=myPassword;User ID=myUser;";
DataTable oraTable = new DataTable();
string queryString = "Select surname,forenames from person table where surname = 'Smith'";
using ( OracleConnection oraConnect = new OracleConnection( oraStr1 ) )
{
try
{
OracleCommand OraCmd = new OracleCommand( queryString, oraConnect );
oraConnect.Open();
OracleDataAdapter OraAdapter = new OracleDataAdapter();
OraAdapter.SelectCommand = OraCmd;
OraAdapter.Fill( oraTable );
}
finally
{
oraConnect.Close();
}
现在...(C# Express Edition)应用程序正在远程服务器上的 VM 中运行。 我在此 VM 上的 share 还安装了 Oracle Database 10g Client Release 2 (10.2.0.1.0)。
此外,我还安装了 IT 部门的 Oracle 数据访问组件。
在 VM 中运行 ODBCAD32 时,驱动程序选项卡中不会列出任何 Oracle 驱动程序。
我相信安装的驱动程序失败了,这导致我的程序无法启动任何连接。但是,我没有证据,想知道这里有学问的人是否可以建议获得任何……?
读取IDE错误信息的前几行 -
System.Exception was unhandled
Message="OCIEnvCreate failed with return code -1 but error message text was not available."
Source="System.Data.OracleClient"
StackTrace:
at System.Data.OracleClient.OciHandle..ctor(OciHandle parentHandle, HTYPE handleType, MODE ocimode, HANDLEFLAG handleflags)
at System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
at System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions)
at System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.OracleClient.OracleConnection.Open()
很抱歉这么啰嗦,但正如您所见,这个设置相当复杂...... :)
我没有资格告诉 IT 部门他们的工作,但如果我能提供任何建议,我将不胜感激?
【问题讨论】: