MySql.Data.dll / MySql::Data



  • Hi,

    ich habe hier den "MySQL Connector/Net 6.0.4" und "Visual Studio 2008 C++".
    Und möchte verbindungen zu MySQL herstellen, dazu habe ich ein Verweis auf "MySql.Data.dll" gemacht.

    Es gibt auch eine Hilfe Datei für "MySQL Connector/Net" die ein Beispiel vorgibt:http://www.filedealer.com/freeupload/40084055abd4da47c33e716cc87c3c34.pdf

    Leider klapt bei mir der Punkt

    MySqlConnection myConnection = new MySqlConnection(myConnectionString);
    

    bzw.

    MySql::Data::MySqlClient::MySqlConnection myConnection = gcnew MySql::Data::MySqlClient::MySqlConnection(myConnectionString);
    

    nicht. Denn stat "MySqlConnection" heißt es dann plötzlich

    MySql::Data::MySqlClient::MySqlClientFactory
    

    in "Visual C++". Allerdings läst sich da auch kein String mehr übergeben an "MySqlConnection".

    😕 😮 😡 🙄

    Kann mir wer aus der patsche helfen?

    Ich Programmiere in CLI / .Net



  • Was kommen für Fehler bzw. was geht genau nicht?
    Simon



  • Meine ursprünglichen Probleme haben sich von selbst gelöst. Ich weiß nicht ein kleiner Aktuellesierungs-Bug oder so, dass manchmal dynamische zusammenhänge nicht funktionieren. Hatte ich aber schon öfters, dass ich die .cpp Datei erst abspeichern musste, bevor Visual die Verzweigung geladen hat. So dass dann z.B. nach System:: endlich auch die untereren Bäume angezeigt wurden.

    MySql:: ging nämlich plötzlich nicht mehr. Also dachte ich ich müsste MySql::Data als using namespace eintragen. Funktionierte auch nur, dass dann der Baum hinter MySql:: ganz andere Objekte aufwieß. Nach einer weile habe ich einfach noch mal MySql.Data (mit Punkt!) eingegeben und wieder gelöscht, da ging dann auf einmal MySql::Data::... wieder.

    Aber nichts des trotz habe ich bereits ein weiteres Problem und zwar die Funtkion Open() von MySql::Data::MySqlClient::MySqlConnection bzw. die Funktion Ping() von der selben Classe. Nämlich wenn der Ziel Server nicht erreicht werden kann, tritt eine unbehandelte Außnahme ein. Kann man die nur mit "Try" abfangen oder gibt es da auch eine möglichkeit vor dem ausführen von Open() die verfügbarkeit von dem Ziel Server zu prüfen? Ping() funktioniert ja, nur wenn der Ziel Server wirklich nicht erreichbar ist crasht es gleich.



  • blablabla...

    Also ich komme um "try" "catch" nicht herum. Das sieht dann so aus:

    public void ShowException()
    {
    string mySelectQuery = "SELECT column1 FROM table1";
    MySqlConnection myConnection = new MySqlConnection("Data Source=localhost Database=Sample;");
    MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection);
    
    try
    {
    myCommand.Connection.Open();
    }
    catch (MySqlException e)
    {
    MessageBox.Show( e.Message );
    }
    }
    

    (Dieses Beispiel ist für C#)



  • Hi,

    wenn ich das hier richtig verstehe willst mit c++/cli auf eine mysql table was schreiben?

    Bin auch ein Anfänger hab mich aber auch schon mit mysql connector etwas beschäftigt und poste dir hier mal das du testen kannst, vielleichtz hilfts dir ja 😕

    So kann man den Code usen:

    mysqlConn^ connection = gcnew mysqlConn();
    
    //Set a Mysql Connection 
    if(connection->openMysqlConnection("Server","User","Pass","Datenbankname")) {
    	//Write in a Table
    	connection->writteMysqlData("TabellenName","spalte1,spalte2,spalte3,spalte4","'Wert1','Wert2','Wert3','Wert4'");
    	//Close MySql Connection
    	connection->closeMyslqConnection();
    }	else {
    	MessageBox::Show("Verbindungs Fehler!");
    }
    

    Header Datei:

    using namespace System;
    using namespace MySql::Data::MySqlClient;
    
    ref class mysqlConn
    {
    private:
    	MySqlConnection^ msgHandle;
    
    public:
    	int openMysqlConnection(String^ server, String^ user, String^ pass, String^ dbname) {
    		try{
    			String^ connectionVars = "server="+server+";uid="+user+";pwd="+pass+";database="+dbname;
    			MySqlConnection^ myConnection = gcnew MySqlConnection(connectionVars);
    			myConnection->Open();
    			msgHandle = myConnection;
    			return 1;
    		} 
    		catch(MySqlException^ x) {
    			return 0;
    		}
    		catch(System::NullReferenceException^ x) {
    			return 0;
    		}
    	}
    
    	void writteMysqlData(String^ table, String^ rows, String^ values) {
    		String^ InsertQuery = "INSERT INTO `"+table+"` ("+rows+") VALUES ("+values+");";
    		MySqlCommand^ command = gcnew MySqlCommand(InsertQuery);
    		command->Connection = msgHandle;
    		command->BeginExecuteNonQuery();
    	}
    
    	void closeMyslqConnection() {
    		msgHandle->Close();
    	}
    };
    

    Ich bin ein Anfänger also ist das sicher nicht so gut durchgeführt exeptions kenn ich mich auch ned so toll aus 🙂

    Naja wie schon gesagt vielleicht hilfts dir.

    lg seek



  • Ja, sowas in der art. Also so ähnlich werden dann meine Operationen dann auch aus sehen.

    Jetzt habe ich hier aber ein ganz anderes Problem...

    Nach dem starten von Visual Studio, kam dann nach dem laden des Projekts folgender Fehler:

    Der Designer konnte für diese Datei nicht angezeigt werden, da keine der enthaltenen Klassen entworfen werden kann.

    Instanzen dieses Fehlers (1)

    1. Aufrufliste ausblenden

    bei System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
    bei System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
    bei Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
    bei System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)

    Das SP1 für Visual Studio habe ich bereits drauf gepackt.



  • Wenn ich das besagte Projekt compilieren wil erscheint dazu folgender Fehler:

    1>------ Erstellen gestartet: Projekt: xx xxxxxxxxx xx, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>xx xxxxxxxxx xx.cpp
    1>.\xx xxxxxxxxx xx.cpp(6) : error C2059: Syntaxfehler: 'namespace'
    1>.\xx xxxxxxxxx xx.cpp(6) : error C2238: Unerwartete(s) Token vor ';'
    1>.\xx xxxxxxxxx xx.cpp(19) : fatal error C1075: Dateiende erreicht, bevor das zugehörige Element für das linke Element Klammer "{" in "x:\programmierung\ms - visual c++ 2008 express edition\projekte\xx xxxxxxxxx xx\xx xxxxxxxxx xx\mainForm.h(23)" gefunden wurde
    1>Das Buildprotokoll wurde unter "file://x:\Programmierung\MS - Visual C++ 2008 Express Edition\Projekte\xx xxxxxxxxx xx\xx xxxxxxxxx xx\Debug\BuildLog.htm" gespeichert.
    1>xx xxxxxxxxx xx - 3 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



  • oh man...

    dieses Problem ist auch wieder gelöst. Wieder so ein komischer hintergrundfehler im IDE. Ich glaube langsam da sind verarbeitungsfehler beim lesen der Codierung, wie ANSI oder UTF-8, welche da auch immer verwendet wird.


Anmelden zum Antworten