2015-02-21 25 views
8

Uygulama testlerim için QTP/UFT kullanıyorum. Bazı DB kurulumlarını yapmak (kayıtları güncellemek için) Oracle Oracle'a (11g) erişmem gerekiyordu.oracle bağlantı hatası open

oracle.manageddataaccess.dll kullanıyorum (myDBWrapper sınıf kitaplığı projesine başvurulur). Aşağıda olması

dlls (myDBWrapper benim yarattığım biridir - konu mevcut)

enter image description here

Benim bağlantı dizesi:

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

Sayı :

conn.open() sırasında aşağıdaki kod hata veriyor. Bazen & bazen çalışır, aynı makinede 'Nesne referansı' bir nesnenin örneğini ayarlamamak 'hatası verir.

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

Not:

Bir kaynak sızıntısı değildir. Sadece 1 bağlantı kurup bertaraf ediyorum. DB'ye başka kimse bağlanmıyor.

Sorun meydana geliyor - QTP'nin COM lib olması durumunda. Bunu &'u otomatikleştirmek için kullandığımda onu görünmez hale getirin (QTP.Visible = FALSE). QTP.Visible = TRUE kullanırsam sorun olmaz. Bu ne biçim bir mesele!

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

tam yığın izlemesini gösterin lütfen deneyin nesne Eğer yaratılmasıyla DB bağlanmak için yardımcı olacaktır. – OldProgrammer

+0

@OldProgrammer, kontrol ettiğiniz için teşekkürler. stacktrace eklendi. – KitKarson

+0

@ OldProgrammer, Ek bir bilgi olarak QTP bir otomasyon aracıdır. .net dll'yi içe aktarabilir ve yöntemlerini kullanabilir. GUI modunda, harika çalışıyor. GUI olmayan modda - hata atar. 64 ve 32 bit makinelerde olur. diğer tüm dll'ler non gui modunda çalışıyor. Bu sorunu çözmek için ihtiyacınız olan bilgileri vermeyi çok isterim. – KitKarson

cevap

1

size bir biçim yükü bu kodu var mı VB.NET benziyor diye mi? Formu göstermiyorsanız bu olay önceden tahmin edilemez.

-1

ADOB bağlantı nesnesini kullanarak oracle bağlantısını denediniz mi? Eğer Oracle sürücüsü yüklü olması gerekir ve bunun ADOB bağlantısı

+1

Bu muhtemelen bir cevaptan ziyade bir yorum olmalı – Bowdzone

0

bu

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