MySQL Verbindng
-
- Gewöhnt dir das Zusammenbauen der SQL Befehle aus den Benutzereingaben ab. Sonst ist Deine Anwendung anfällig für SQL Injection.
- Was hat das JDBC-Zeug hier zu suchen? Es gibt eine ganz normal Bibliothek für MySQL und C bzw. C++.
In diesem Forum geht es um Standard C++. Wenn Du Fragen zu bestimmten Betriebssystemen und Laufzeitumgebungen hast, gibt es hier spezielle Foren:
https://www.c-plusplus.net/forum/category/27/winapi
oder
https://www.c-plusplus.net/forum/category/69/datenbankenLG Martin
-
@Felix Dann hat möglicherweise get_driver_instance einen nullptr zurückgegeben.
-
@mgaeckler Danke für die schnelle Antwort! Die Anwendung ist nur für mich und meinen Bruder gedacht, deshalb denk ich nicht das er SQL Injections verursachtaber an sich hast du vollkommen Recht!
Zum 2. Ich war mir nicht ganz sicher ob ich diesen Thread in das C++ oder Datenbanken Forum packe da ich dachte das wäre eher ein "C++ Fehler" anstatt eines SQL Fehlers, von mir aus kann ich den Thread aber auch nochmal in Datenbanken tun und diesen hier löschen.
Ich wäre dir sehr verbunden wenn du mir mein vorhaben für die normale mysql Bibliothek erklärst.Lg Felix
-
@mgaeckler Wie kann ich das ändern bzw. was bedeutet diese Return-Statement in diesem Fall?
Lg Felix
-
@Felix Keine Ahnung. Möglicherweise findet er Deine Javaumgebung nicht. Wie schon geschrieben, verwende die C-Api von MySQL.
LG
-
Du solltest dir ASAP angewöhnen mit dem Debugger zu arbeiten. Einfach einen Brechpunkt auf Zeile 18 setzen und dann im Einzelschrittmodus weiterspringen und gucken, wie sich deine Variablen verändern.
Und robust zu programmieren, überall wo ein Zeiger auf iwas zurückgegeben wird besteht prinzpiell die Möglichkeit, dass ernull
ist und nicht dereferenziert werden darf.
-
Ich nehme an, du hast deinen Code von MySQL Datenbank unter C++ verwenden!?
Wobei man bei dem Verbindungsaufbau korrekte Daten angeben muss. Dafür müsst ihr DOMAIN, DBUSER, PASSWORD und DBNAME mit euren Daten ersetzen
Paßt denn der Domainname
DOMAIN
(dies sollte der Rechnername sein, auf dem der MySql-Server installiert ist) sowie der DatenbanknameDBNAME
?@mgaeckler hat aber Recht, daß der JDBC-Zugriff veraltet ist und man die neuere X DevAPI verwenden sollte, s. Introduction to Connector/C++.
-
@Th69
Du hast recht, den Code hab ich daher und das war auch falsch hab es jetzt geändert:try { driver = get_driver_instance(); con = driver->connect("tcp://localhost:3306", "root", ""); con->setSchema("user"); }
nur leider ist der Fehler immer noch der gleiche. Ist localhost überhaupt richtig oder sollte ich wirlkich meinen RechnerNamen verwenden. (Benutze Xampp)
-
@Felix sagte in MySQL Verbindng:
nur leider ist der Fehler immer noch der gleiche.
Du prüfst immer noch nicht, ob driver ungleich 0 ist. Und für con gilt dann natürlich im nächsten Schritt das gleiche.
-
@manni66
Meinst du so:try { driver = get_driver_instance(); if (driver != 0) { con = driver->connect("tcp://localhost:3306", "root", ""); con->setSchema("user"); } else { return NULL; } } catch (sql::SQLException) { return NULL; }
-
@Felix sagte in MySQL Verbindng:
Meinst du so:
Ja. Man könnte natürlich dem Benutzer noch irgendetwas mitteilen, statt einfach nur abzubrechen.
-
Ein simple Frage, warum nutzt Du nicht die C Library von MySQL?