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
Verbindung zu MySql schlägt fehl
PresidentOfNoobistan
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

Verbindung zu MySql schlägt fehl

beantworten | zitieren | melden

Verwendetes Datenbanksystem: <MySQL>

Hallo liebe Gemeinde,

ich habe mich an mein zweites Projekt drangemacht. Es soll ein Organizer mit einem Login- & Registerscreen werden und jedwede Benutzer- und Login-Daten sollen abgespeichert. Es sollen ebenfalls in den Organizer eingegebene Daten, wie z. B. Name, Vorname, E-Mail-Adresse, Telefonnummer etc. pp. abgespeichert werden.
Ich benutze XAMPP und wollte über Visual Studio Code eine Verbindung herstellen und eine Tabelle erstellen aber das Ganze möchte nicht so funktionieren. NuGet & der Connector NET 8.0 sind soweit installiert, in dem Projekt habe ich via Rechtsklick im Projektmappen-Explorer auf das Projekt -> Hinzufügen -> Verweise -> Erweiterungen -> "MySql.Data" hinzugefügt.
Wo könnte das Problem liegen? Was mache ich falsch?

Ich bedanke mich schon mal für die Antworten.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;



namespace Organizer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        } 

        private void BtnAbbruch_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void BtnAnmelden_Click(object sender, EventArgs e)
        {     
            if(TxtBenutzer.Text == "Benutzer" && TxtPasswort.Text == "Passwort")
            {
              //  new Form2().Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("Der Benutzername oder das Passwort ist falsch! Bitte noch einmal eingeben!");
                TxtBenutzer.Text = "";
                TxtPasswort.Text = "";
            }
        }

        public void save_entry()
        {
            String url = "datasource=localhost;port=3306;username=root;password=;";
            String sqlCode = "CREATE TABLE personen(name VARCHAR(30), vorname VARCHAR(25), personalnummer INT, gehalt DOUBLE, geburtstag DATE, PRIMARY KEY NOT NULL(personalnummer))";

            MySqlConnection connection = new MySqlConnection(url);
            MySqlCommand eingabe = new MySqlCommand(sqlCode, connection);

            connection.Open();
            Console.WriteLine("Die Verbindung wurde hergestellt!");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            save_entry();
        }
    }
}

private Nachricht | Beiträge des Benutzers
dannoe
myCSharp.de - Member



Dabei seit:
Beiträge: 152

beantworten | zitieren | melden

Leider ist meine Glaskugel für eine unbestimmte Zeit kaputt. Könntest du erläutert was genau "aber das Ganze möchte nicht so funktionieren." bedeutet? Erhältst du Fehlermeldungen? Passiert nichts? Du hast Ausgaben in deinem Code eingebaut, werden diese ausgegeben?

Und sobald du SQL Queries mit dynamischen Werten absetzt, solltest du den folgenden Artikel beachten: [Artikelserie] SQL: Parameter von Befehlen

Und da du auch Logindaten inkl. Passwörter in der Datenbank speichern möchtest, solltest du dir diesen Beitrag von Abt noch durchlesen: Wie baue ich ein Online-Anmeldesystem für ein Unity Game?
private Nachricht | Beiträge des Benutzers
PresidentOfNoobistan
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Das mit deiner Glaskugel tut mir leid
Spaß bei Seite, meine Formulierung diesbezüglich war wirklich etwas doof..
Die sind die Fehlermeldungen die ich erhalte:
Fehler
MySql.Data.MySqlClient.MySqlException: "Unable to connect to any of the specified MySQL hosts."
SocketException: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 127.0.0.1:3306


Wie könnte ich diese beheben?
Habe es auch mit Java ausprobiert und es hat letzten Abend ohne Probleme geklappt..

PS: Danke für die Threads, sie sind sehr hilfreich.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



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

beantworten | zitieren | melden

Was du aktuell zusätzlich noch falsch machst, ist dein Verbindungshandling.
In deinem Code öffnest du zwar eine Verbindung, machst damit aber nichts.
Ebenfalls schließt du diese nicht, hier solltest du using oder wenigstens Close aufrufen, wenn du fertig bist.
Auch wird dein Befehle zum erstellen der Tabelle nicht ausgeführt.
Hier musst du die ExecuteNonQuery Methode des MySqlCommand aufrufen.

Die Zugansdaten gehören in eine Config Datei, nicht in den Code selbst.
Sich dann auch noch mit root ohne Passwort anmelden, ist schon eine krasse Sicherheitslücke.
Hier solltest du mindestens einen eigenen Benutzer anlegen und der nur auf seine Datenbank Zugriff hat.
Wenn die Anwendung verteilt laufen soll, also z.B. Zugriffe von extern auf die Datenbank, dann solltest du der Datenbank noch eine (Web)Api vorschalten.
Zugriffe von extern direkt auf eine Datenbank sind ein absolutes NoGo!

Da du hier auch mit kritischen Daten arbeitest, hast du hofentlich ein ordentliches Datenschutz Konzept.
Hier willst du sonst keine Daten wie Telefonnummern oder Emails speichern.
Ebenfalls brauchst du dann noch die Einwilligung aller Benutzer, die ihre Daten bei dir speichern sollen.
Die DSGVO hat hier einige kritische Punkte festgeschrieben, mit denen du dich vorab beschäftigen solltest.

Nachtrag:
Dein Verbindungsproblem aus deinem letzten Kommentar deutet darauf hin, dass entweder die MySQL Instanz nicht läuft.
Hier müsstest du also z.B. über ein entsprechendes Tool erstmal schauen ob du gerenell eine Verbindung aufbauen kannst.
Wenn ja, dann stimmen deine Verbindungsdaten im Code ja nicht.

Nachtrag 2:
Ebenfalls solltest du deinen Code aufteilen.
Datenbankzugriffe erfolgen bei sauberen Code nicht in der UI.

Schau dir am besten dazu noch den Artikel für die 3 Schichten Architektur an.

[Artikel] Drei-Schichten-Architektur



T-Virus
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von T-Virus am .
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
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 509
Herkunft: Münster

beantworten | zitieren | melden

Für mich sieht der Connectionstring nicht richtig aus. Jedenfalls sieht meiner (ich arbeite täglich mit MySQL & MariaDB) anders aus

Server=localhost;Port=3306;Database=myDataBase;Uid=root;Pwd=myPassword;

private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #avatar-3299.jpg


Dabei seit:
Beiträge: 3727
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Wenn die Verbindung nicht funktioniert dann immer mit HeidiSQL probieren mit den gleichen Anmeldedaten.

Wenn es da nicht geht : Anmeldedaten falsch !

Wenn es da geht : Programm falsch !

"data source" kann man statt "server" benutzen, dann aber in 2 Wörtern !

"user id" oder "uid" für Username.

Grüße Bernd



Die kostenlose Unternehmenssoftware : [url=https://seven-c.de/die-quasar-3-community-version/]Die Quasar-3 Community Version[/url] Workshop : [url=https://download.seven-c.de/files/datenbankenhowto.htm]Datenbanken mit ADO.NET[/url]
private Nachricht | Beiträge des Benutzers
M.L.
myCSharp.de - Member



Dabei seit:
Beiträge: 249

beantworten | zitieren | melden

Zusätzlich könnte es auch ein Treiberproblem geben: MySQL connection strings - ConnectionStrings.com
Goalkicker.com
DNC Magazine for .NET Developers,
Software is like cathedrals: first we build them, then we pray ;-)
private Nachricht | Beiträge des Benutzers
FlattiCo
myCSharp.de - Member



Dabei seit:
Beiträge: 5

beantworten | zitieren | melden

ich würde generell keine verbindungen der App direkt zur Datenbank erstellen. Falls du größere Datenmengen aus der Datenbank abruft dauert das sehr lange.
Ich würde dir empfehlen dich etwas über eine sogenannte PHP Schnittstelle schlau zu machen.


Aber so solltest du dein Programm nicht öffentlich stellen. Gibt dabei eineige kritische Punkte. Externer Zugriff direkt auf die Datenbank? Puuuuuuuh.
Wenn da son heini mit Wireshark sitzt kann der das alles wunderschön mitlesen, was da wo von wo mit wen und was abgespeichert wird. Zusätzlich kann der sich dann einfach so in deine Datenbank einloggen. So lockt man hacker an.

PHP dateien laufen Server seitig wodurch keine sau der welt ohne FTP zugriff diese PHP files begutachten kann. Dann noch eine SSL verschlüsselung draufpacken und Passwörter verschlüsseln und dann bist du grundsätzlich auf der sicheren seite.


Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von FlattiCo am .
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



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

beantworten | zitieren | melden

@FlattiCo
Die Schnittstelle sollte hier technologisch neutral sein bzw. auf vorhandene Technik aufsetzen und möglichst austauschbar sein.
Deshalb hatte ich oben auch schon von Web API gesprochen.
Diese kann man ohne Probleme mit C# umsetzen.
Diese basiert dann auch auf bestehenden Techniken wie http für die Kommunikation und z.B. Json als Datenformat.

Sich auf PHP zu verlassen, nur weil es Serverseitig läuft ist auch etwas einseitig gedacht.
Generell sollte man hier auch prüfen ob diese Zentrale Instanz nötig ist.
Das der TE sich dann auch um das Thema Datenschutz gedanken machen muss, dürfte das Thema noch um einiges problematischer werden.
Da es aber seit einem Monat kein Feedback mehr gab, scheint der TE das Problem andersweitig gelöst zu haben.
Ob hier noch Feedback Erfolgt ist deshalb fraglich.

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