我希望有任何建议来解决这个问题。
我不是专业开发人员,而是一位“继承”报告工作的“业余爱好者”(感谢我对编程的兴趣 - “从不志愿”的经典示例!)。从C#程序的Oracle访问
我试图从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中运行。 此虚拟机上的我的共享也安装了Oracle数据库10g客户端版本2(10.2.0.1.0)。
另外,我已经安装了由IT部门安装的Oracle数据访问组件。
在虚拟机中运行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他们的工作,但会感谢任何意见我可以传递?