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)
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()
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
@OldProgrammer, kontrol ettiğiniz için teşekkürler. stacktrace eklendi. – KitKarson
@ 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