Laden...

Fehlermeldung bei Datenbank-Verbindung

Erstellt von sacoma vor einem Jahr Letzter Beitrag vor einem Jahr 807 Views
S
sacoma Themenstarter:in
23 Beiträge seit 2022
vor einem Jahr
Fehlermeldung bei Datenbank-Verbindung

Hallo Leute, 🙂

ich bin erst seit diesen Jahr mit der Umschulung zur Fachinformatikerin für Anwendungsentwicklung fertig geworden und totale Anfänger mit C# und Visual Studio IDE.

Wegen Jobwechsel muss ich aber fit darin werden...

Deshalb habe ich mir Visual Studio 2022 installiert und angefangen die Grundlagen zu lernen.

Leider scheitere ich gerade daran ein Programm mit einer Datenbankverbindung zu coden.

Es kommt folgende Fehlermeldung bei der Zeile mit dem Code-Befehl "verbindung.Open();", wenn ich das Programm ausführe:

Fehlermeldung:
System.IO.FileNotFoundException
HResult=0x80070002
Nachricht = Could not load file or assembly 'System.Security.Permissions, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Das System kann die angegebene Datei nicht finden.
Quelle = MySql.Data
Stapelüberwachung:
bei MySql.Data.MySqlClient.MySqlConnection.AssertPermissions()
bei MySql.Data.MySqlClient.MySqlConnection.Open()
bei datenbank.Program.Main(String[] args) in C:\Users\HP\source\repos\datenbank\datenbank\Program.cs: Zeile30

Ich verstehe nicht, warum Visual Studio die Datei nicht findet, ich habe den Verweis unter Menü "Projekt -> Projektverweis hinzufügen..." folgenden Pfad hinzugefügt: "C:\Program Files (x86)\MySQL\Connector NET 8.0\Assemblies\v4.8\MySql.Data.dll"

Hier ist mein Code:



using MySql.Data.MySqlClient;

namespace datenbank
{
    internal class Program
    {
        static void Main(string[] args)
        {

            string verbindungsdaten = "SERVER=localhost;" + "DATABASE=db;" + "UID=admin;" + "PASSWORD=4d1nP4??w0rt;";
            
            MySqlConnection verbindung = new MySqlConnection(verbindungsdaten);
             
            Console.Write("Geben Sie bitte die Artikelnr. ein: ");
            int artikelnummer = int.Parse(Console.ReadLine());
            Console.WriteLine("Geben Sie bitte den Fahrradtyp ein: ");
            string typ = Console.ReadLine();
            Console.WriteLine("Geben Sie bitte die Farbe ein: ");
            string farbe = Console.ReadLine();
            Console.WriteLine("Geben Sie bitte den Preis ein: ");
            double preis = double.Parse(Console.ReadLine());

            string befehl = "INSERT INTO fahrraeder VALUES (" + artikelnummer + " , '" + typ + "', '" + farbe + "', " + preis +");";

            MySqlCommand befehlsobjekt = new MySqlCommand(befehl);
            befehlsobjekt.Connection = verbindung;

            verbindung.Open();
            befehlsobjekt.ExecuteNonQuery();
            verbindung.Close();

            string befehl2 = "SELECT * FROM fahrraeder;";
            MySqlCommand befehlsobjekt2 = new MySqlCommand(befehl2);
            
            befehlsobjekt2.Connection = verbindung;

            MySqlDataReader Reader;
            
            verbindung.Open();
            Reader = befehlsobjekt2.ExecuteReader();

            while (Reader.Read())
            {
                string zeile = "";
                for (int i =0; i < Reader.FieldCount; i++)
                {
                    zeile += Reader.GetValue(i).ToString() + " ";
                    Console.WriteLine(zeile);
                }
             }
            verbindung.Close();
        }
    }
}


Ich hoffe, dass mir hier jemand helfen kann, denn im Internet habe ich nichts zu meinem Problem gefunden.
Vielen Dank im Voraus. 😉

LG,

sacoma

3.825 Beiträge seit 2006
vor einem Jahr

Bei Stackoverflow finde ich zu dem Fehler :

I resolved it by using nuget package manager to install Mysql.Data and also installed System.Security.Permissions. This solved my problem.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

S
sacoma Themenstarter:in
23 Beiträge seit 2022
vor einem Jahr

Danke, BerndFfm! 😘

Es funktioniert! 👍

Ich hoffe, dass ich mal bald Hilfestellung geben kann. 😉

LG,

sacoma

M
368 Beiträge seit 2006
vor einem Jahr

Auf Vorrat (da DB-Anbindung): [Artikelserie] SQL-Befehle:... (macht Sinn, wenn man Daten manipulierenden Angreifern/Nutzern/... nicht "Tür und Tor" offen halten will)
Fehlerhafte (i.S. von nicht vertrauenswürdige) Software kann man sich aber auf jedem Weg einhandeln (Anspielung auf Youtube, "thenativeweb", "Achtung! npm ist unsicher (by Design …))

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

M
368 Beiträge seit 2006
vor einem Jahr

..Anfänger mit C# ..

Teil II, um die gröbsten Fehler nach Möglichkeit zu verhindern:
--aus technischer Sicht interessiert den Compiler nur das formell korrekter Code geschrieben wird (zur Not zwingt einen der Compiler mittels Warn- oder Fehlermeldungen zu diesem Verhalten). "Formell korrekt" im Minimalfall: -alle Methoden/Variablen/... sind auf jeden Fall innerhalb einer Klasse zu definieren(), -eine cs.-Datei des Projekts enthält eine "static void Main"-Methode(), -Datentypsicherheit ist einzuhalten

(*)neuere .NET Versionen könnten liberaler sein und diese Anforderungen in den Hintergrund rücken lassen

--aus menschlicher Sicht machen diese (empfohlenen) Verhaltensweisen Sinn:
-Code Conventions (erleichtert das Lesen/Schreiben von Code)
-Aufteilung in Schichten, s.a. Drei-Schichten-Architektur (macht effektiv Sinn, wenn die SW an einer (zentralen) Stelle (häufig(er)) geändert oder erweitert werden soll) Generell erleichtert die korrekte Anwendung des "Teile-und-Herrsche"-Prinzips das Erweitern oder Ändern einer Software.
-weitere Stichwörter: Verwendung von SW-Tests / Algorithmen / Datenstrukturen...

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