Announcement

Collapse
No announcement yet.

OracleDataAccess (Einbinden/ILMerge VB 2005 engl.)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • OracleDataAccess (Einbinden/ILMerge VB 2005 engl.)

    Guten Morgen

    nachdem ich nun ein bißchen experementiert habe, habe ich mich nun auf Oracle fesgesetzt. Da mir nur der System.Data.OracleClient zur Verfügung steht und mir aber gesagt worden ist, das dieser nicht merh von Microsoft supportet wird, aber der Oracle.DataAccess.dll Treiber nicht per Softwareverteilung verteilt werden kann (warum auch immer), wollte ich diese DLL Datei in die EXE Anwendung mit einfügen.

    So das diese entweder irgendwo auf einem Server zentral liegt mit dem Verweis auf den Pfad oder das diese immer mit der EXE Anwendung mit kopiert werden muß. Leider bekomme ich beim Starten folgende Fehlermeldung:

    "Der Typeninitialisierer für MeinToo.mdlConnection hat eine Ausnahme verursacht."

    Die mdlConnection ist das Modul in der die Verbindung steht.
    Hinweis: Ich habe schon verschiedene Verbdingungen hier hinterlegt um zu auch andere zu testen.
    Code:
    'Imports System.Data.OracleClient
    Imports System.Data.OleDb
    Imports Oracle.DataAccess.Client
    Imports ADODB
    
    
    Module mdlConnection
        '+ "Pooling=true;" _
        '+ "Min Pool Size=10;" _
        '+ "Max Pool Size=100;" _
        '+ "Connection Lifetime=0"
    
        'Provider = "MSDAORA.1"             - Oracle-DB [von Microsoft]
        'Provider = "OraOLEDB.Oracle.1"     - Oracle-DB (von Oracle)
        'Provider = "SQLOLEDB.1"            - MS-SQL-Server
    
        'OLEDB Connection - Oracle
        Public sConnString As String = _
                "Provider=OraOLEDB.Oracle;" & _
                "Data Source=BLN;" & _
                "User ID=Aktiv;" & _
                "Password=Aktiv" & _
                "Pooling=true;" & _
                "Min Pool Size=10;" & _
                "Max Pool Size=100;" & _
                "Connection Lifetime=0"
        Public ORACLEoledb = New OleDb.OleDbConnection(sConnString)
    
        'OLEDB Connection - Oracle
        Public MySQLsConnString As String = _
                "Provider=SQLOLEDB.1;" & _
                "Data Source=10.xxx.x.xx;" & _
                "User ID=root;" & _
                "Password=Password" 
        Public MySQLoledb = New OleDb.OleDbConnection(sConnString)
    
    
        'OracleClient Connection
        Private Const OraDB As String = "Data Source=BLN;" _
        + "User ID = Aktiv;" _
        + "Password = Aktiv;"
        '+ "Pooling=true;" _
        '+ "Min Pool Size=10;" _
        '+ "Max Pool Size=100;" _
        '+ "Connection Lifetime=0"
        
        Private Const OraDB_Long As String = "Data Source = (DESCRIPTION =" _
        + "(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 10.xxx.x.xx) (PORT = 1521)))" _
        + "(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE )));" _
        + "User ID = Aktiv;" _
        + "Password = Aktiv;"
    
        Public ConnNet As New OracleConnection(OraDB)
    
        'ADODB Connection
        Public ConnADODB As New Connection
        Public RsADODB As New Recordset
    
        Public Const ADODBConnectionString = "Data Source=BLN;" _
                    + "User ID = Aktiv;" _
                    + "Password = Aktiv;" _
                    + "Pooling=true;" _
                    + "Min Pool Size=10;" _
                    + "Max Pool Size=100;" _
                    + "Connection Lifetime=0"
        Public Const ADODBProvider = "OraOLEDB.Oracle.1"
        'ConnADODB.Provider = ADODBProvider
        'ConnADODB.ConnectionString = ADODBConnectionString
        'ConnADODB.Open()
        
    
        'MySQL
        Public MySQLrs As ADODB.Recordset
        Public MySQLfld As ADODB.Field
        Public MySQLsql As String
    
        Public MySQLconn = New ADODB.Connection
        Public Const MySQLConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=10.xxx.x.xx; DATABASE=mastamm; UID=root;PWD=password; OPTION=3"
        'MySQLconn.ConnectionString = MySQLConnectionString
        'MySQLconn.open()
        'MySQLconn.close()
    
    
    End Module
    Habe ich irgendwas falsch gemacht oder geht das nicht, das man die DLL mit gibt?

    Ich habe es auch schon mit ILMerge probiert. Er hat zwar die Datei erstellt, aber die gleiche Fehlermeldung.

    LG Marja

  • #2
    Vielleicht fehlt dir eine Abhängigkeit (weitere Dll,Treiber, Datenbank Client) die die
    Oracle.DataAccess.dll benötigt? Zum Beispiel weil sie einfach fehlt oder nur in einer anderen Version vorhanden ist. Hast du nachgeschaut ob diese dll zum installierten Datenbank Client passt?

    Schau dir ansonsten die Exceptiondetails noch mal genauer an. Da sollte mehr drinstehen also nur diese Meldung insbesondere in einer hoffentlich vorhandenen InnerException.

    Comment


    • #3
      danke dir erstmal für deine Antwort.

      Ich muß ganz kurz mal ausholen bzgl. dieser DLL Datei.
      Ich habe den Oracle Treiber auf dem PC, auf den auch VB 2005 drauf ist installiert. Auf allen anderen Clients, wie erwähnt ist der Treiber nicht drauf.

      Wenn ich nun auf dem VB 2005 Rechner die DLL Datei direkt einbinde Add Reference .. .Net dann funktioniert es. Habe ich die DLL woanders kopiert, den bestehenden Verweis gelöscht und durch den man. (Browse) Speicherort der DLL verwendet, erfolgt dieser Fehler.

      Dadurch das ich .open in Try Catch End Try verwendet habe, erfolgte nur diese Fehlermeldung. Nun habe ich .open vor Try ausgeführt und ich gelange dann zum Troubleshooting mit folgender Info:

      Troubleshooting Exceptions: System.Exception
      Represents errors that occur during application execution. This is the base class for all exceptions.

      Ich weiß nicht ob man damit mehr anfangen kann, aber ich denke da fehlt dann noch bestimmt was, weil sonst geht es ja noch.

      ist es überhaupt möglich, wenn man die entsprechenden DLL Dateien hat, das es funktioniert? Oder muß der Treiber immer direkt installiert werden auf jeden Client? Dann kann ich es gleich vergessen, wollte nämlich die notwendigen Treiber immer mitliefern zur Anwendungs.exe Datei.

      Edit: Ich dachte da hat irgendwie noch ne DLL gefehlt, hmm war es doch nicht
      habe folgende Info, kann aber noch nicht viel damit anfangen
      System.TypeInitializationException was unhandled
      Message="Der Typeninitialisierer für Mytool.mdlConnection hat eine Ausnahme verursacht."
      Source="Mytool"
      TypeName="Mytool.mdlConnection"
      StackTrace:
      bei Mytool.MdlMain.Main() in D:\Users\Peter.Lustig\Visual Studio 2005\Projects\Mytool\Mytool\Module\mdlMain.vb:Zeil e 16.
      bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
      bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
      bei Microsoft.VisualStudio.HostingProcess.HostProc.Run UsersAssembly()
      bei System.Threading.ThreadHelper.ThreadStart_Context( Object state)
      bei System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
      bei System.Threading.ThreadHelper.ThreadStart()
      Marja
      Zuletzt editiert von marja; 05.03.2010, 14:37.

      Comment


      • #4
        Oracle.DataAccess.dll wird nur ein manged Wrapper um den eigentlichen Datenbank Treiber sein damit dieser in .NET verwendbar wird. Du musst also auch den eigentlichen Oracle Client auf dem Rechner installiert haben. Nur die dll wird nicht reichen.

        Dort wo dir dir diese DLL besorgt hast sollte es auch eine Doku geben. Und in der sollte es einen Absatz zum Deployment geben die beschreibt was alles vorhanden/mitgeliefert werden muss und wie dieses zu konfigurieren sind

        Wenn die DLL zum aktuellen ODP.Net gehört schaust du hier.

        Comment

        Working...
        X