Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net oracle连接打开错误_Vb.net_Oracle11g_Qtp_Hp Uft - Fatal编程技术网

Vb.net oracle连接打开错误

Vb.net oracle连接打开错误,vb.net,oracle11g,qtp,hp-uft,Vb.net,Oracle11g,Qtp,Hp Uft,我使用QTP/UFT进行应用程序测试。 我必须访问我的oracle数据库(11g)来进行一些数据库设置(更新记录) 我使用的是oracle.manageddataaccess.dll(参考myDBWrapper类库项目) 我有以下DLL (myDBWrapper是我创建的—存在问题的地方) 我的连接字符串: 注: 这不是资源泄漏。我只需要建立一个连接并进行处理。没有其他人连接到数据库 问题发生-当QTP具有COM库时。当我使用它来自动化并使其不可见时(QTP.Visible=FALSE)。如果

我使用QTP/UFT进行应用程序测试。 我必须访问我的oracle数据库(11g)来进行一些数据库设置(更新记录)

我使用的是
oracle.manageddataaccess.dll
(参考myDBWrapper类库项目)

我有以下DLL

(myDBWrapper是我创建的—存在问题的地方)

我的连接字符串:

注:

这不是资源泄漏。我只需要建立一个连接并进行处理。没有其他人连接到数据库

问题发生-当QTP具有COM库时。当我使用它来自动化并使其不可见时(
QTP.Visible=FALSE
)。如果使用QTP.Visible=TRUE,则不会发生问题。这是什么问题

堆栈跟踪:


因为它看起来像VB.NET,你有没有在表单加载中加载这些代码?如果不显示表单,则该事件是不可预测的。

您是否使用ADOB连接对象尝试了oracle连接?您需要安装Oracle驱动程序,它将通过创建ADOB连接对象来帮助您连接到DB

conn = New Oracle.ManagedDataAccess.Client.OracleConnection(ConnectionString)

请显示完整的堆栈跟踪。@老程序员,谢谢检查。添加了stacktrace。@OldProgrammer,作为附加信息,QTP是一个自动化工具。它可以导入.net dll并使用其方法。在GUI模式下,它工作得非常好。在非GUI模式下-它抛出错误。发生在64位和32位计算机中。所有其他DLL都在非gui模式下工作。我很乐意为您提供解决此问题所需的任何信息。在我看来,这就像OracleInternal中的一个bug。I18N。。。我不知道你是否能对此做些什么。可能的解决方法:开始隐藏,取消隐藏连接,然后重新取消隐藏。此外,我认为您可以将qtp配置为最小化,并且仍然具有“可见”状态。这可能是一个注释而不是答案
conn = New OracleConnection()
conn.ConnectionString = ConnectionString
MsgBox("isnothing? : " & (conn Is Nothing).ToString)   'it is always False. So , not null

conn.Open()  ' It throws an error that "Object reference not to set an instance of an object"

Dim cmd As OracleCommand = New OracleCommand(strQuery)
cmd.BindByName = True
cmd.Connection = conn
RowsAffected = cmd.ExecuteNonQuery()
cmd.Dispose()
conn.Dispose()
Object reference not set to an instance of an object.
   at OracleInternal.I18N.Conv.GetMaxBytesPerChar(Int32 charsetId)
   at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession)
   at OracleInternal.ConnectionPool.PoolManager`3.CreateNewPR(Int32 reqCount, Boolean bForPoolPopulation, ConnectionString csWithDiffOrNewPwd)
   at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd)
   at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword)
   at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
   at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
   at myDBWrapper.Utility.DBUtil.OpenConnection()
conn = New Oracle.ManagedDataAccess.Client.OracleConnection(ConnectionString)