oracle连接打开错误

时间:2015-02-21 15:55:04

标签: vb.net oracle11g qtp hp-uft

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

我使用oracle.manageddataaccess.dll(引用myDBWrapper类库项目)。

我有以下dll

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

enter image description here

我的连接字符串:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<HOST>)(PORT=<PORT>>)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<SERVICENAME>)));User Id=<USERNAME>;Password=<PASSWORD>;

问题:

conn.open()期间的以下代码引发错误。它有时会起作用有时会抛出一个错误,即## Object引用不设置对象的实例&#39;在同一台机器上。

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()

注意:

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

问题发生 - 当QTP有COM lib时。当我用它来自动化&amp;使它不可见(QTP.Visible = FALSE)。如果我使用QTP.Visible = TRUE - 问题不会发生。这是什么问题!!!

StackTrace

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()

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:-1)

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