Laden...

[gelöst] Wieso bringt MySQL immer FileNotFound - Fehlender Abhängigkeit?

Erstellt von jenny_csharp vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.658 Views
J
jenny_csharp Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren
[gelöst] Wieso bringt MySQL immer FileNotFound - Fehlender Abhängigkeit?

Hallo zusammen,

ich habe versucht mein erstes Datenbankübungsbeispiel zu schreiben, aber ich bekomme ständig die gleiche Fehlermeldung und verstehe nicht woran das liegt.
Ich verwende MySQL als Datenbank und die MySQL Connector Net Bibliothek.
Es kommt jedesmal folgende Fehlermeldung:> Fehlermeldung:

"System.IO.FileNotFoundException: "Could not load file or assembly 'System.Security.Permissions, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Das System kann die angegebene Datei nicht finden."

Ich habe im Internet nach der Lösung gesucht und mehrere ausprobiert, aber leider hat nichts davon funktioniert. 1.Mittels using weitere Bibliotheken hinzugefügt 1.MySQL.Data.dll --> Lokale Kopie auf JA gesetzt 1.Beim string verbindungsdaten verschiedene Eingaben ausprobiert. Mal mit UID, mal mit USER, PORT hinzugefügt und weggelassen etc.

Ich habe hier mal den Quellcode reinkopiert und eine PDF mit mehreren Screenshots angehängt!

using System;

// Wird benötigt um die Klassenbibliothek von MySQL Connector Net verwenden zu können
using MySql.Data.MySqlClient;

namespace Datenbank_S192
{
    class Program
    {
        static void Main(string[] args)
        {
            /* localhost bedeutet, dass sich die Datenbank am gleichen Rechner befindet, von dem
               das Programm ausgeführt wird */
            /*
         string verbindungsdaten = "SERVER=localhost;" +
                                   "DATABASE=meinedatenbank;" +
                                   "UID=admin;" +
                                   "PASSWORD=adminPasswort;";
                                   */

            string verbindungsdaten = "SERVER=localhost;" +
                                   "DATABASE=meinedatenbank;" +
                                   "USER=admin;" +
                                   "port=3306;" +
                                   "PASSWORD=adminPasswort;";


            // Objekt vom Typ MySqlConnection wird erstellt und verbindungsdaten zugewiesen
            MySqlConnection verbindung = new MySqlConnection(verbindungsdaten);

            Console.Write("Geben Sie die Artikelnummer des Fahrrades ein:");
            int artikelnummer = int.Parse(Console.ReadLine());

            Console.Write("Geben Sie den Fahrradtyp ein:");
            string fahrradtyp = Console.ReadLine();

            Console.Write("Geben Sie die Farbe des Fahrrades ein:");
            string farbe = Console.ReadLine();

            Console.Write("Geben Sie den Preis des Fahrrades ein:");
            double preis = double.Parse(Console.ReadLine());

            Console.Write("Geben Sie die Laufradgroesse des Fahrrades ein:");
            sbyte laufradgroesse = sbyte.Parse(Console.ReadLine());

            // INSERT INTO fahrraeder VALUES (artikelnummer, typ, farbe, preis, laufradgroesse);
            /*string insertBefehl = "INSERT INTO fahrraeder VALUES (" +
                                  artikelnummer + "," +
                                  fahrradtyp + "," +
                                  farbe + "," +
                                  preis + "," +
                                  laufradgroesse + ");";*/

            string insertBefehl = "INSERT INTO fahrraeder VALUES (" +
                      artikelnummer + ", ' " +
                      fahrradtyp + " ', ' " +
                      farbe + " ', " +
                      preis + "," +
                      laufradgroesse + ");";

            // Objekt vom Typ MySqlCommand wird erstellt und MySQL-Befehl zugewiesen
            MySqlCommand befehlsobjekt = new MySqlCommand(insertBefehl);

            // Das Objekt mit dem Befehl wird mit dem Objekt der erstellten Verbindung zusammengeführt
            befehlsobjekt.Connection = verbindung;

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

        }
    }
}


Vielen Dank für die Hilfe! 😉

J
jenny_csharp Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren

Problem gelöst! Bin jetzt doch noch zufällig auf die Lösung gestoßen.

Ich habe per NuGet mehrere Pakete installiert, dann kam jedesmal eine andere Fehlermeldung. Habe anhand der Fehlermeldungen die nächsten fehlenden Pakete installiert. Irgendwann kam dann eine weitere Fehlermeldung und ein Hinweis meiner Firewall, dass das Programm sich verbinden will. Habe das dann zugelassen und plötzlich hat es funktioniert! 🙂

Wollte den Topic gleich danach wieder löschen, aber scheinbar kann ich den nur bearbeiten, aber nicht löschen. Vielleicht hilft das ja dem ein oder anderen weiter.
Danke! 🙂

T
2.219 Beiträge seit 2008
vor 3 Jahren

Auf den ersten Blick sieht dein Code sehr böse aus.
Nutzt für die Insert Anweisungen zum schreiben der Daten sowie generell immer SQL Parameter.
MySql hat hier auch im ADO .NET Provider entsprechende Klassen und Methoden.

Auch sollte deine Datenbank Verbindung über die Config eingelesen werden.
Dafür gibt es sogar im ConfigurationManager die ConnectionStrings.

Ebenfalls solltest du using für deine Connection und die Commands nutzen, da du beides disposen musst.

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.

J
jenny_csharp Themenstarter:in
7 Beiträge seit 2020
vor 3 Jahren

So viel Programmiererfahrung hab ich leider noch nicht. Ich arbeite momentan ein Grundlagenbuch durch und der Code stammt ebenfalls von dort.
Es wurde aber leider kein Wort erwähnt, dass ich die Eigenschaft Lokale Kopie auf Ja setzen und diverse Pakete installieren muss. Die Portangabe etc. wurde ebenfalls von mir hinzugefügt, weil ich die Info im Internet gefunden habe.
Sobald ich das Buch durch hab, werd ich mich ans nächste Buch machen bzw. Anleitungen aus dem Internet abarbeiten. Dann werden vermutlich auch weitere Alternativen bei SQL Zugriffen beschrieben und kann so das Wissen vertiefen.

LG

M
368 Beiträge seit 2006
vor 3 Jahren

Grundlagenbuch Wie heisst das Buch ? Aufgrund der restlichen Beschreibung ist allerdings zu befürchten das ein älteres Lehrwerk auf ein aktuelleres .NET Framework inkl. IDE trifft.
nächste Buch machen bzw. Anleitungen aus dem Internet Siehe eben
weitere Alternativen bei SQL Zugriffen

ADO.NET wäre die Standardtechnologie von Microsoft, sog. OR-Mapper für .NET wären z.B. Entity Framework, Dapper

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

L
1 Beiträge seit 2021
vor 3 Jahren

Ich scheine gerade in dem selben Buch am selben Problem zu stehen könntest du mir vielleicht weiterhelfen und einmal deinen Lösungsweg genau erklären?
Das wäre sehr hilfreich.

Mit freundlichen Grüßen
Lante