Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
XAMARIN MySQL Datenbankverbindung wirft Exception
Loofsy
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

XAMARIN MySQL Datenbankverbindung wirft Exception

beantworten | zitieren | melden

Hallo liebe Mitentwickler,

Ich bin dabei eine kleine App in Xamarin zu schreiben und mochte mit dieser nun eine MySQL datenbankverbindung aufbauen und einfach einen Simplen String aus einer Tabellenspalte (Typ VARCHAR) in einem Simplen DisplayAlert() wiedergeben lassen.

Nun wirft mir VS2019 folgende Exception "the type initializer for 'mysql.data.mysqlclient.replication.replicationmanager' threw an exception.".

Ich nutze ein von mir entwickeltes Framework (KFrame) in welchem meine MySQL Methoden implementiert sind. (hat auch immer funktioniert)


// _db.IsConnected() prüft ob eine Verbindung zur datenbank aufgebaut werden konnte (gibt true oder false zurück)
// object _db.GetValue(int,string) ruft den wert aus der datenbank ab
// else ist zu debug zwecken unbelegt
           _db = new KFrameMob.Network.Database.MySQL("dummyserver", "Database", "Username", "Password"); // 
            if(_db.IsConnected())
            {
                DisplayAlert("Meldung",(string)_db.GetValue(1, "select * from app where id='1'"),"Verstanden!");
            }
            else
            {

            }

Ich habe einen Thread in einem anderen Forum mit dem Problem gefunden allerdings ist das hier scheinbar nicht die lösung
Fehler beim Aufbau einer MySQL Verbindung - breadfish.de - DIE deutschsprachige GTA-Community

Vielen Dank für die hilfe im vorraus
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.312

beantworten | zitieren | melden

Zitat
un wirft mir VS2019 folgende Exception "the type initializer for 'mysql.data.mysqlclient.replication.replicationmanager' threw an exception.".
Und was steht in der Exception? Die hat ne Message und nen Stacktrace.

Aber Hinweis: Apps sollten nicht direkt auf Datenbanken zugreifen, vor allem aus Sicherheitsgründen nicht.
Datenbanken sollten nicht direkt über das Internet verfügbar sein, sondern es sollte ein Service (HTTP / gRPC / REST / GraphQL...) dazwischen hängen.
Die Grundarchitektur nennt sich hier Backend for Frontend, wobei Frontend der Platzhalter für jede Art von Web-Client ist.

Apps müssen davon abgesehen asynchron programmiert werden, denn wenn der Haupt-Thread zu lange blockiert (weniger hundert Millisekunden), schießt die mobile Runtime (iOS / Android..) die App ab.
private Nachricht | Beiträge des Benutzers
Loofsy
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

beantworten | zitieren | melden

vielen dank für die Antwort.

Da gebe ich dir recht und es existiert auch bereits ein Web-Backend mit einer Asyncronen verarbeitung welche mit JSON arbeitet.

Ich will nur testen ob es auch so funktioniert.

In der das ist das die Exception message. Auch bei MS ist das scheinbar nicht näher erläutert. Zumindest hab ich das nicht gefunden. Es gibt zwar google redults aber die bringen mich auch nicht wirklich weiter.

Die Exception wird bereits ausgelöst wenn die Methode Open() von MySqlConnect aaufgerufen wird. An der verbindung kann es abef nicht liegen da andefe clients die verbindung aufbauen können.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.594

beantworten | zitieren | melden

Da wird es wohl noch eine zugehörige InnerException geben...
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.312

beantworten | zitieren | melden

Zitat von Loofsy
Ich will nur testen ob es auch so funktioniert.
In der Theorie geht alles, aber es bleibt Zeitverschwendung. Das ist das schlechteste, was man tun kann.
Davon abgesehen je nach Daten (GDPR und Co) darf die dazu gehörige Datenbank laut EU-Gesetz nicht direkt im Internet hängen. Es gibt also rechtliche Aspekte (neben dem gesunden Verstand ;-)), wieso man sowas nicht tun soll.

Öffentliche Datenbanken mit Username-Password sind das mit Abstand größte Leck von Daten.
Zitat
In der das ist das die Exception message. Auch bei MS ist das scheinbar nicht näher erläutert.
Unwahrscheinlich, weil diese alleinstehende Exception ohne weitere Infos gibts nicht.
In Deinem Link zB steht zusätzlich
Fehler
System.IO.FileNotFoundException: Could not load file or assembly 'System.Configuration.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Das System kann die angegebene Datei nicht finden.
Ist das bei Dir auch der Fall? Wenn ja, dann stimmt was an Deinen Verweisen nicht.
Zitat
Die Exception wird bereits ausgelöst wenn die Methode Open() von MySqlConnect aaufgerufen wird.
Das spricht dafür, dass eine Abhängigkeit fehlt (oder zB nicht zur Runtime passt), weil beim Open die Abhängigkeiten in diesem Fall (MySQL hat hier unmanaged references) dynamisch nachgeladen werden.
Fehlt was, knallts.
private Nachricht | Beiträge des Benutzers
Loofsy
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

beantworten | zitieren | melden

Ok na wenn ich das schon rechtlich nicht darf dann mach ich es auch erst gar nicht. Ich danke dir
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.087
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Oder du könntest dem Rat von Abt folgen und das ganze einfach über einen Services anbieten.
Im einfachsten Fall mit einer Http Api wie WebAPI auf REST und Json Basis.
Mit Https hast du dann auch direkt eine sichere Datenübertragung, was man mit Lets Encrypt heute ohne großen Aufwand aufsetzen kann.
Dann ist deine DB sauber auf dem Server ohne äußerliche Zugriffe und dein Service kann sauber durch Authentifizierung den Zugriff kontrolllieren.

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.312

beantworten | zitieren | melden

Zitat von Loofsy
Ok na wenn ich das schon rechtlich nicht darf dann mach ich es auch erst gar nicht. Ich danke dir
Also wie gesagt, die Aussage ist nicht pauschal, sondern das kommt drauf an, welche Daten Du hast.
Weil es gibt da so ne schwammige Klausel, dass Du "einen technisch sicheren Weg" wählen musst - und den wiederum kann man auslegen.
Aber de facto gelten Datenbanken, die direkt im Internet hängen, nie als "pauschal sicher".
private Nachricht | Beiträge des Benutzers