none
VB.Net und MySql

    Allgemeine Diskussion

  • Hallo ich versuche mit VB.net2012 auf meine MySql Datenbank zu zugreifen was leider nicht funktioniert.

    Sobald ich auf den auslösenden Button klicke erhalte ich fogende Meldung:

    Eine nicht behandelte Ausnahme des Typs "System.TypeInitializationException" ist in Kasse.exe aufgetreten.

    Zusätzliche Informationen: Der Typeninitialisierer für "Kasse.start_vars" hat eine Ausnahme verursacht.

    Die Verbindung sollte über den eingebundenen MySql Connector erfolgen

    in der start.vars sind die Verweise zur app1.config welche die Zugangsdaten enthält.

    was mache ich verkehrt?

    Freitag, 7. Dezember 2012 22:41

Alle Antworten

  • Hallo Werner,

    steht das nicht noch mehr hinter "Der Typeninitialisierer für "Kasse.start_vars" hat eine Ausnahme verursacht."? Falls ja, poste das, was da steht, bitte genau und vollständig.

    Wie darf man sich das "in der start.vars sind die Verweise zur app1.config" vorstellen? Was ist "start.vars"? Und warum steht dort ein Verweis auf eine .config Datei?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 8. Dezember 2012 01:46
  • Hallo Stefan,

    der Debugger gibt noch folgende Meldung:

    Eine Ausnahme (erste Chance) des Typs "System.InvalidOperationException" ist in System.dll aufgetreten.
    "Kasse.vshost.exe" (Verwaltet (v4.0.30319)): "C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_de_b77a5c561934e089\msco rlib.resources.dll" geladen
    Eine Ausnahme (erste Chance) des Typs "System.TypeInitializationException" ist in Kasse.exe aufgetreten.
    Eine nicht behandelte Ausnahme des Typs "System.TypeInitializationException" ist in Kasse.exe aufgetreten.
    Zusätzliche Informationen: Der Typeninitialisierer für "Kasse.start_vars" hat eine Ausnahme verursacht.
    Der Thread '<Kein Name>' (0x1c20) hat mit Code 0 (0x0) geendet.
    Das Programm "[7264] Kasse.vshost.exe: Verwaltet (v4.0.30319)" wurde mit Code 0 (0x0) beendet.

    Im Code sind danach alle "conn" markiert

    vieleicht hilft das ja.

    die start_vars enthält die Configurations Variablen zur Datenbank und bezieht diese aus der app1.config

    bei bedarf kann ich dir beide Codes hier mal posten

    Gruß Werner

    Samstag, 8. Dezember 2012 15:58
  • bei bedarf kann ich dir beide Codes hier mal posten

    Gruß Werner

    Hallo Werner,

    NET connector oder ODBC connector?

    Gruss Ellen

    P.S. MySql Odbc sample in meiner Gallerie


    (VB2008 Express, VB2010 Express, VST2008 professional) Ellens Codegallerie

    Samstag, 8. Dezember 2012 19:19
  • Hallo Ellen,

    aktueller Net Connector Version 6.6.4 von der MySql Seite

    Gruß Werner

    Samstag, 8. Dezember 2012 19:21
  • Hallo Ellen,

    aktueller Net Connector Version 6.6.4 von der MySql Seite

    Gruß Werner

    Hallo Werner,

    die Ausnahme Typeninitialisier hatte ich auch mit dem Oracle NET provider.

    Die Ursache war ein fehlerhaft installiertes package im GAC.

    Habe das hier gefunden (MySQL NET connector) :

     The Connector/Net installer will register the connector within the Global Assembly Cache (GAC)

    Da gibt es auch eine x86 und x64 Version.

    Nur ein Hinweis. Vielleicht hilft Dir das.

    Gruss Ellen


    (VB2008 Express, VB2010 Express, VST2008 professional) Ellens Codegallerie


    • Bearbeitet Ellen Ramcke Samstag, 8. Dezember 2012 20:02 link
    Samstag, 8. Dezember 2012 19:46
  • Hallo Ellen,

    habe ja nur ein Verweis zum MySql Adapter ausgeführt.

    Werde mal die Installations Datei laden und dann testen, vieleicht liegts daran.

    Gruß Werner

    Samstag, 8. Dezember 2012 19:55
  • Hallo Ellen,

    habe ja nur ein Verweis zum MySql Adapter ausgeführt.

    Werde mal die Installations Datei laden und dann testen, vieleicht liegts daran.

    Gruß Werner

    Nun ja daran lags nicht

    Samstag, 8. Dezember 2012 20:12
  • Hallo Werner,

    1. Ist die Dll im GAC sichtbar? C:\windows\assembly

    2. ist das project target auf x86 oder x64?

    3. Referenz im Object browser sichtbar? (F2)

    Gruss Ellen


    (VB2008 Express, VB2010 Express, VST2008 professional) Ellens Codegallerie

    Samstag, 8. Dezember 2012 20:38
  • Hallo Ellen,

    Ist im GAC sichtbar und auch im Object Browser, target steht auf alle Platformen/CPU's

    habe auch mal auf X86 getestet, gleicher Fehler.

    Hier mal die app1.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <system.diagnostics>
            <sources>
                <!-- Dieser Abschnitt definiert die Protokollierungskonfiguration für My.Application.Log -->
                <source name="DefaultSource" switchName="DefaultSwitch">
                    <listeners>
                        <add name="FileLog"/>
                        <!-- Auskommentierung des nachfolgenden Abschnitts aufheben, um in das Anwendungsereignisprotokoll zu schreiben -->
                        <add name="EventLog"/>
                    </listeners>
                </source>
            </sources>
            <switches>
                <add name="DefaultSwitch" value="Information" />
            </switches>
            <sharedListeners>
                <add name="FileLog"
                     type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 
                     initializeData="FileLogWriter"/>
                <!-- Auskommentierung des nachfolgenden Abschnitts aufheben und APPLICATION_NAME durch den Namen der Anwendung ersetzen, um in das Anwendungsereignisprotokoll zu schreiben -->
                <add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="Kasse"/> 
            </sharedListeners>
        </system.diagnostics>
    <appSettings>
      <add key="server" value="localhost"/>
      <add key="username" value="root"/>
      <add key="password" value="maurice"/>
      <add key="datenbank" value="kasse"/>
      <add key="port" value="3306"/>
    </appSettings>
    </configuration>
    

    die start.vars

    Public Class start_vars
        Private Shared aSettingsReader As New System.Configuration.AppSettingsReader
    
        Public Shared server As String = CStr(aSettingsReader.GetValue("server", GetType(String)))
        Public Shared username As String = CStr(aSettingsReader.GetValue("username", GetType(String)))
        Public Shared password As String = CStr(aSettingsReader.GetValue("password", GetType(String)))
        Public Shared datenbank As String = CStr(aSettingsReader.GetValue("datenbank", GetType(String)))
        Public Shared port As String = CStr(aSettingsReader.GetValue("port", GetType(String)))
    
        Public Shared myConnectionString As String = "server=" & server & ";uid=" & username & ";pwd=" & password & ";database=" & datenbank & ";port=" & port & ";"
    
    End Class
    

    und als letztes ein Auszug der Form mit dem auslösenden Button

        Public Shared conn As New MySql.Data.MySqlClient.MySqlConnection
        Public Shared da As Common.DbDataAdapter
        Dim sql As String
    
        Public Shared Sub abfrage_ausfuehren_start_form(ByVal dieser_sql As String)
            Try
                conn.ConnectionString = myConnectionString
                conn.Open()
                da = New MySqlDataAdapter(dieser_sql, conn)
                Dim dt As New DataTable
                da.Fill(dt)
                'listen.Anzahl_der_Lieferanten.Text = dt.Rows.Count.ToString
                listen.DataGridView1.DataSource = dt
                conn.Close()
            Catch ex As MySql.Data.MySqlClient.MySqlException
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    
    
        Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    
        End Sub
    
    Private Sub LieferantenToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles LieferantenToolStripMenuItem.Click
            sql = "SELECT * FROM lieferanten"
            abfrage_ausfuehren_start_form(sql)
        End Sub-
    
    

    Vieleicht hilfts ja weiter.

    Arbeite auf Windows8 pro mit

    • Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4. MySQL 5.5.27

    Eventuell hängts ja auch an der Version2012 lade mir gerade mal die Version 2010 herunter

    Gruß Werner

    Samstag, 8. Dezember 2012 23:10
  • Hi,

    Arbeite auf Windows8 pro mit Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4. MySQL 5.5.27

    Du willst jetzt nicht ernsthaft sagen, dass Du mit Mono arbeitest, oder?

    Nicht, dass ich etwas gegen Mono hätte, aber das wären ganz andere Voraussetzungen, um die Fehlersuche anzugehen.

    Warum Apache, ...? Ich persönlich würde es für sinnvoller halten, mit dem IIS zu arbeiten. Es sei denn, die Anwendung muss später auch produktiv auf einem Indianer laufen.

    Und was hat PHP damit zu tun?

    Dazu dann noch die Frage: Warum sind da statische (Shared) Eigenschaften, Methoden und Variablen in deinem Code? Das macht wenig bis gar keinen Sinn. Nimm da mal das Shared weg und erzeuge Instanzen der Klassen. Damit arbeitet es sich besser.

    Und zum eigentlichen Fehler: Hast Du denn schon mal einen Breakpoint auf die erste Zeile in "abfrage_ausführen_start_form" gesetzt und dann mal geschaut, was genau nicht funktioniert?


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 8. Dezember 2012 23:37
  • Hallo Stefan,

    OK PHP hätte ich weglassen können hat mit dem aktuellen Projekt nix zu tun ;-)

    Nein mit Mono wird nicht gearbeitet, Apache aus dem Grund das ich hier auch eine Testumgebung für meinen Server habe welche auch mit Apache, PHP und MySQL läuft.

    Nun wieder zu meinem EX Fehler

    Wechseln wir mal auf VB2010 schreiben den gleichen Code dort hinein und sehen es läuft.

    Was haben wir daras gelernt? Erstmal noch Finger weg von der Version2012, habe das letzte mal vor ca. 1 1/2 Jahren auch mit der 2010er gearbeite.

    Aber an alle die hier versucht haben zu helfen ein GROßES Danke.

    Gruß Werner

    • Als Antwort markiert Werner_sg Sonntag, 9. Dezember 2012 02:33
    • Tag als Antwort aufgehoben Werner_sg Sonntag, 9. Dezember 2012 02:33
    Sonntag, 9. Dezember 2012 02:31
  • Hi,
    die Probleme mit MySql kann ich nicht bestätigen mit:
     
    Windows 7
    MySql 5.5 als Windows Dienst
    Connector 6.5.5
    VS 2012
    FW 3.5, FW 4.5
    Windows Anwendung
     
    Bei Dir sind vermutlich irgendwelche falschen dll’s installiert. Bei mir läuft es problemlos.
     
    --
    Viele Gruesse
    Peter
    Sonntag, 9. Dezember 2012 07:45
  • Hallo Peter,

    schieb die Schuld ja nicht auf die Version2012 sondern die gesamte Constellation mit Windows 8.

    Und da es mit dem 2010 funktioniert, bin ich damit erst mal zufrieden.

    Werde es aber sicher später nochmal, nach dem nächsten Update, testen.

    mfG Werner

    Sonntag, 9. Dezember 2012 10:37
  • Hi,
    Windows 8 ist ja eine bisher nicht genannte Konstellation. Auch da funktioniert es bei mir problemlos.
     
    --
    Viele Gruesse
    Peter
    Sonntag, 9. Dezember 2012 11:56
  • Und da es mit dem 2010 funktioniert, bin ich damit erst mal zufrieden.

    Hallo Werner_sg,

    Ich möchte Dich bitte folgendes lesen und die Beiträge die Dir geholfen haben zu bewerten. Vielen Dank.

    Nutzen Sie die Bewertungsfunktionen ("Antwort" und "Hilfreich") in den MSDN Foren! Unter anderem können andere später eine Lösung schneller finden. Es ist also wünschenswert, dass die fragenden (Benutzer) die Beiträge anderer Beantworter bewerten. Hier dazu die wichtigsten Anhaltspunkte aus den Forenregeln und FAQs.

    Lösungsbeiträge als „Die Antwort“ markieren
    Bitte markieren Sie den Beitrag, der zur Lösung geführt hat, als "Die Antwort". Durch Bewerten eines Beitrags als "Die Antwort" können andere Teilnehmer die Lösung schneller finden. Außerdem können Sie dem Benutzer, der die Antwort eingereicht hat, für seinen Beitrag danken und zur Steigerung der Antwortqualität in der Diskussionsgruppe beitragen. [Quelle: Forenregeln]

    Bitte markiere den/die Beiträge als Antwort, die dir geholfen haben, dein Problem zu lösen. Das ist zum einen eine Anerkennung für die Autoren dieser Beiträge, zum anderen hilft es zukünftigen Lesern, sich in diesem Thread besser zu orientieren und Antworten auf ihre Fragen schneller zu identifizieren.

    Wie zeige ich an, dass meine Frage durch einen Beitrag beantwortet wurde?

    Wie bewerte ich einen Beitrag als hilfreich? Um einen Beitrag als hilfreich zu bewerten, klicken Sie in einem beliebigen Beitrag auf Als hilfreich bewerten. Sie können Ihre Stimme nur einmal für einen Beitrag abgeben. [Quelle:
    Häufig gestellte Fragen]

    Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Dienstag, 11. Dezember 2012 12:08
    Besitzer
  • ****************************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    ****************************************************************************************************************

    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 14. Dezember 2012 09:29
    Besitzer