Laden...

Mithilfe von .NET+Android auf Synology MariaDB zugreifen

Erstellt von DerAndere vor einem Jahr Letzter Beitrag vor einem Jahr 949 Views
D
DerAndere Themenstarter:in
4 Beiträge seit 2022
vor einem Jahr
Mithilfe von .NET+Android auf Synology MariaDB zugreifen

Hallo Leute,

Ich rätsle jetzt schon Wochen rum wie ich eine Verbindung zu meiner Datenbank via Smartphone machen kann. Bin ich hier richtig wenn ich damit nicht weiterkomme? Wenn ja, dann super. Wenn nein, wo muss ich hin 🙂?!

Aktuelles Setting:
-Synology DS218
-MariaDB 10 MySQL
-Windows FrontEnds aktuell in WPF+C# und Microsoft Access
-MariaDB ODBC Driver 64-bit
-Zugriff aktuell nur im Heimnetzwerk möglich
-Statische IP vorhanden aber nocht nicht in Verwendung
-Router: FritzBox! 7530
-Android FrontEnd in C# und .NET 7 (Habe schon mal Login und Reistrierungs-Fenster erstellt)

Beispieldaten:
Datenbankname: dbTest
TabellenName: tblUsers
Port: 3306
Benutzername: Ich
Passwort: VielzustarkesPasswort!
NAS IP: 192.168.178.100
Statische IP: 129.156.299.455

Sollzustand:
-Auf Daten in der MariaDB über das Android FrontEnd zugreifen.
-Auf Bilder auf dem NAS liegen zugreifen.

Aktuelle speichere ich (lokal im Netzwerk) die Tabelle tblUsers so in eine Variable:


using System;

namespace MeinWindowsProgramm
{
    public static class Test
    {
        public static string MySQLConStr { get; } = "server=192.168.178.100;port=3306;Database=dbTest;uid=Ich;pwd=VielzustarkesPasswort!;";
        public static MySql.Data.MySqlClient.MySqlConnection MySQLCon;
        public static TYPE_tblUsers[] tblUsers;

        public class TYPE_tblUsers
        {
            public int ID { get; }
            public string Name { get; }
            public TYPE_tblUsers(int ID_, string Name_)
            {
                ID = ID_;
                Name = Name_;
            }
        }

        public static void Load_tblUsers()
        {
            string TableName = "tblUsers";
            string sql = "SELECT * FROM `" + TableName + "`;";
            MySQLCon = new MySql.Data.MySqlClient.MySqlConnection();
            MySQLCon.ConnectionString = MySQLConStr;
            MySQLCon.Open();
            MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(sql, MySQLCon);
            MySql.Data.MySqlClient.MySqlDataReader rdr = cmd.ExecuteReader();

            int i = -1;
            tblUsers = new TYPE_tblUsers[] { };

            while (rdr.Read())
            {
                i++;
                Array.Resize(ref tblUsers, tblUsers.Length + 1);
                tblUsers[i] = new TYPE_tblUsers(int.Parse(rdr["ID"].ToString()),rdr["Day"].ToString());
            }
            rdr.Close();
            MySQLCon.Close();
        }
    }

}

So ich hoffe ich konnte es verständlich erklären. Wie würde der Code jetzt für .NET in C# aussehen? Bzw. Welche Plugins/Routerkonfiguration/Nas Konfiguration sind hierzu nötig damit ich die tabelle auf meinem Smartphone zur verfügung habe?

MfG Fabian

4.931 Beiträge seit 2008
vor einem Jahr

Soll deine App denn nur bei dir im lokalen Netzwerk funktionieren oder willst du Zugriff auch über das Mobilfunknetz auf die Datenbank haben?

Es gab neulich erst folgendes Thema: XAMARIN MySQL Datenbankverbindung wirft Exception - beachte besonders die Hinweise von Abt.

D
DerAndere Themenstarter:in
4 Beiträge seit 2022
vor einem Jahr

Soll deine App denn nur bei dir im lokalen Netzwerk funktionieren oder willst du Zugriff auch über das Mobilfunknetz auf die Datenbank haben?

Über das Mobilfunktnetz

Es gab neulich erst folgendes Thema:
>
- beachte besonders die Hinweise von
>
.

Ok, also sollte ich nicht direkt auf die Daten zugreifen, das heißt ich muss eine Verbindung über einen zusätzlichen Dienst herstellen, wo bekomme ich diesen Dienst her? Ist Node.js v18 oder Apache HTTP Server 2.4 (Kenne mich damit nicht aus) so ein Dienst? Den sowas gibt es bei Synology, oder muss ich etwas anderes verwenden?

16.806 Beiträge seit 2008
vor einem Jahr

NodeJS und Apache sind hier (vereinfacht gesagt) nur eine Runtime.
Den Dienst und die Modelle, die zwischen Server-App und Client App (bei Dir Mobile) ausgetauscht werden, musst Du selbst entwickeln.

4.931 Beiträge seit 2008
vor einem Jahr

Ja, du benötigst dazu einen HTTP Server.
Gefunden habe ich noch folgende Links:

Weitere Stichworte zum Nachlesen: HTTP/Web/REST API, z.B. Einfache REST-API mittels PHP

16.806 Beiträge seit 2008
vor einem Jahr

Synology unterstützt auch Docker, daher kann man auch Apps in Docker Images (mit .NET, oder Java oder...) verlagern und die Container auf Synology laufen lassen.

D
DerAndere Themenstarter:in
4 Beiträge seit 2022
vor einem Jahr

Ja, du benötigst dazu einen HTTP Server.

So habe gerade versuch Fritzbox http port forwarding freizugeben. port 80 für die eigene website und 3306 für mariadb (siehe Anhang). Wäre das so richtig? Also könnte ich jetzt versuchen darauf zu verbinden?

M
368 Beiträge seit 2006
vor einem Jahr

Ein Server ist im Kern ein Programm, welches auf Eingaben von aussen wartet und (irgendwelche) Resultate nach aussen zurückliefert. Node.js scheint (neben Apache + PHP) wohl auch nutzbar zu sein: (etwas älteres Video) https://www.youtube.com/watch?v=tkbu3TT5LT8

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉

T
2.219 Beiträge seit 2008
vor einem Jahr

Warum hängst du deine DB ins Internet bzw. gibst den Port dafür frei?
Genau sowas macht man nicht bzw. gehört der Zugriff auf die DB nur auf lokale (localhost) oder LAN begrenzt.
Nach außen sollte nur dein Http Server verfügbar sein.
Dein Web sollte dann mit der DB sprechen.
Deine Anwendungen sollten dann das Web als Brücke zur DB verwenden!

Nachtrag:
Th69 hat dir mit Web API eigentlich das richtige Stichwort gegeben.
Schau dir das am besten mal an, damit hast du dann deine Schnittstelle.

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.

463 Beiträge seit 2009
vor einem Jahr

So habe gerade versuch Fritzbox http port forwarding freizugeben. port 80 für die eigene website und 3306 für mariadb (siehe Anhang). Wäre das so richtig? Also könnte ich jetzt versuchen darauf zu verbinden?

Respekt - der 1. Schritt für ein unsicheres Netzwerk ist getan... Nicht böse gemeint, aber du hast deine NAS gerade ziemlich offen ins Internet gehängt - wen man hier nciht weiß was man macht sollte man die Finger davon lassen oder jemand fragen der sich damit auskennt...

M
368 Beiträge seit 2006
vor einem Jahr

Zum Thema "Web API" (von der Eigenwerbung mal abgesehen) siehe den aktuellen Newsletter von entwickler.de

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉