Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Coding Releases > Coding Snippets
You last visited: Today at 06:26

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



MySQLQuery++ - a C++ MySQL Query Class

Discussion on MySQLQuery++ - a C++ MySQL Query Class within the Coding Snippets forum part of the Coding Releases category.

Reply
 
Old   #1

 
nico_w's Avatar
 
elite*gold: 0
Join Date: Aug 2008
Posts: 5,153
Received Thanks: 10,483
MySQLQuery++ - a C++ MySQL Query Class

EN:
Hey,

as I'm currently developing FoxBot, I was in need for a small class which is able to create prepared MySQL statements and execute them, preferably using C++ data types like std::string. As I was unable to get the MySQL C++ Connector running, I instead coded my own MySQL query class which is able to create a connection to a MySQL server and execute queries just like I wanted it to do.
It still needs the MySQL C headers and libs though which you can find in MySQL server installations and on the official MySQL website.

The most recent version can be found on my GitHub account in this repository:
Documentation (pdf): (although it should be self-explaining )

Best regards,
Nico

DE:
Hey,

da ich momentan am FoxBot arbeite brauchte ich die Möglichkeit, MySQL-Queries effizient und mit C++-Datentypen wie std::string ausführen zu können. Den offiziellen MySQL C++-Connector konnte ich leider mit MingW nicht zum Laufen bekommen, daher hab' ich mir kurzerhand eine eigene kleine Klasse geschrieben, die Prepared MySQL-Statements erstellen und ausführen kann.
Ihr benötigt dafür trotzalledem die MySQL Includes und Libraries, die sind für gewöhnlich bei einer MySQL-Server-Installation vorhanden oder man kann sie sich auf der MySQL-Webseite runterladen.

Die aktuellste Version findet ihr auf meinem GitHub-Account in diesem Repository:
Dokumentation (pdf, nur Englisch): (sollte aber eigentlich recht selbsterklärend sein )

Gruß,
Nico
nico_w is offline  
Thanks
6 Users
Old 11/27/2013, 01:12   #2


 
Requi's Avatar
 
elite*gold: 3800
The Black Market: 244/0/0
Join Date: Dec 2012
Posts: 13,039
Received Thanks: 8,243
Darf ich dich küssen?

Das kommt gerade passend für mein PServer Projekt.

:***
Requi is offline  
Thanks
1 User
Old 11/27/2013, 09:19   #3

 
Delinquenz's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,160
Received Thanks: 232
Kann dir da nur empfehlen, eine meines Erachtens nach sehr ordentliche Bibliothek, die außerdem nicht auf MySQL beschränkt ist, sondern auch PostgreSQL, SQLite3 etc. unterstützt.

Wenn man allerdings nicht zu viel Overload möchte, würde ich deine Bibliothek empfehlen, da sie auch ziemlich ordentlich aussieht.
Delinquenz is offline  
Old 11/27/2013, 09:23   #4

 
nico_w's Avatar
 
elite*gold: 0
Join Date: Aug 2008
Posts: 5,153
Received Thanks: 10,483
Dass es da noch nen paar Libraries gibt ist klar, nur wollte ich etwas kleines, auf MySQL beschränktes - da kommt mir meine Klasse hier nun recht gelegen, denn sie unterstützt eigentlich alles was ich brauche, ist nicht überladen und übersichtlich gehalten.
nico_w is offline  
Old 11/27/2013, 11:16   #5
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
3 Dinge sind mir beim groben drüberschauen aufgefallen:
1. Keine const correctness.
2. Warum die ganzen std::string Objekte nicht als const ref übergeben?
3. Deine escapeStr-Funktion allokiert dynamischen Speicher ohne dieses freizugeben. Das ist schlechter Stil. Das Objekt, welches Speicher anfordert, sollte dafür verantwortlich sein, diesen wieder freizugeben. Außerdem gibt die Methode einen char* statt std::string zurück.
Schlüsselbein is offline  
Thanks
1 User
Old 11/27/2013, 11:19   #6

 
nico_w's Avatar
 
elite*gold: 0
Join Date: Aug 2008
Posts: 5,153
Received Thanks: 10,483
Quote:
Originally Posted by Schlüsselbein View Post
3 Dinge sind mir beim groben drüberschauen aufgefallen:
1. Keine const correctness.
2. Warum die ganzen std::string Objekte nicht als const ref übergeben?
3. Deine escapeStr-Funktion allokiert dynamischen Speicher ohne dieses freizugeben. Das ist schlechter Stil. Das Objekt, welches Speicher anfordert, sollte dafür verantwortlich sein, diesen wieder freizugeben. Außerdem gibt die Methode einen char* statt std::string zurück.
Danke, ich werd' mich drum kümmern, das zu berichtigen. Hatte das alles nach Feierabend schnell hingeschrieben und werde den Code nochmal dementsprechend verbessern.
nico_w is offline  
Old 11/28/2013, 14:58   #7


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Quote:
Originally Posted by Schlüsselbein View Post
3 Dinge sind mir beim groben drüberschauen aufgefallen:
1. Keine const correctness.
2. Warum die ganzen std::string Objekte nicht als const ref übergeben?
3. Deine escapeStr-Funktion allokiert dynamischen Speicher ohne dieses freizugeben. Das ist schlechter Stil. Das Objekt, welches Speicher anfordert, sollte dafür verantwortlich sein, diesen wieder freizugeben. Außerdem gibt die Methode einen char* statt std::string zurück.
^dies, plus:
  • Die Initialisierung der std::strings in Konstruktor macht keinen Sinn, da der Default-Constructor sie bereits so initialisiert. Weiterhin würde ich da wohl 'ne Initialisierungsliste bevorzugen.
  • MySQLConnection::EscapeString: Bösartiger Heap-Overflow, Output von mysql_real_escape_string kann bis zu doppelt so lang sein, wie der Input Buffer
  • Schrecklich viel redundanter Code bei den gettern .. fauler Hund, kapseln! :P
  • Keine einheitliche Konvention für Benamung von Methoden (oder erkenne ich sie nur nicht?)
Sind noch 'n paar kleinere Dinge drin .. schreib mich dafür einfach mal aufm Jabber an, wenn du Bock hast.
Ende! is offline  
Old 11/28/2013, 16:10   #8
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Es gibt n Jabber?
Schlüsselbein is offline  
Old 11/28/2013, 16:38   #9


 
Ende!'s Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 6,379
Received Thanks: 7,998
Quote:
Originally Posted by Schlüsselbein View Post
Es gibt n Jabber?
Für Lv2+ :P Überlegen momentan noch, den auch für andere Leute zu öffnen, mal sehen.
Ende! is offline  
Old 11/29/2013, 12:44   #10


 
.Marcel''s Avatar
 
elite*gold: 100
Join Date: Sep 2009
Posts: 8,136
Received Thanks: 2,760
Sehr schön, danke.
.Marcel' is offline  
Old 11/29/2013, 21:20   #11

 
nico_w's Avatar
 
elite*gold: 0
Join Date: Aug 2008
Posts: 5,153
Received Thanks: 10,483
So, ist alles behoben :3
nico_w is offline  
Old 11/30/2013, 00:53   #12
 
Schlüsselbein's Avatar
 
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
Paar Methoden sollten noch als const gekennzeichnet werden und primitive Datentypen übergibt man besser by value. Als Referenz bringt dir keinen Vorteil (sollte sogar noch langsamer sein als by value, auch wenns Nanooptimization ist und demnach gar keine Rolle spielt) - es sieht einfach unnatürlich aus

Sieht sonst ganz okay aus.
Schlüsselbein is offline  
Old 12/07/2013, 19:20   #13
 
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
Hey kannst du mir sagen warum, wenn ich <mysql.h> include, sehr viele Fehler von wegen Neudefinition bekommen ? (123 IntelliSense: Mindestens eine Instanz der überladenen Funktion ""WSAStartup"" weist eine "C"-Verknüpfung auf. Ungefähr 110 Stück davon)
Habe schon gegoogelt aber nicht wirklich was brauchbares gefunden ...

Edit : Habs gelöst ...
th0rex is offline  
Reply


Similar Threads Similar Threads
vb.net MySQL Query?
06/25/2013 - .NET Languages - 10 Replies
Huhu, ich schreibe gerade an einem Programm das einige Daten in einer MySQL DB speichert. Das Verbinden funktioniert auch wunderbar, allerdings hängt das Programm immer bis zum Timeout wenn ich die Daten aus der Datenbank laden möchte.. Dim conn As MySqlConnection conn = New MySqlConnection conn.ConnectionString = "server=localhost;" _ & "user id=root;" _ & "password=;" _ ...
Mysql Query.
10/12/2012 - Metin2 Private Server - 7 Replies
Hey Com. Ich suche eine query die alle Einträge: costume_system sucht und löscht aus meiner quest.sql
PHP-Mysql _ query
06/08/2012 - Web Development - 0 Replies
Hallo meine frage/problem wie kriege ich es hin das diese anfragen mit einem query abgesendet werden? $eintrag = "INSERT INTO lions_aateilnahme (Event,Freund,Personen,EssenFleisch, EssenFisch,EssenVeg,Kommen,Bemerkung) VALUES ('$id','$name', '$teilnehmer','$norm', '$fisch','$veg','$kommen','$bemerkung')"; $eintragen = mysql_query($eintrag); if(!empty($int)){ $intt= "INSERT INTO lions_aateilnahme (IntAntwort1) VALUES('$int')"; $eintragen = mysql_query($intt);
PHP/MySQL Help - Is this MySQL Query correct?
09/23/2011 - CO2 Programming - 1 Replies
$rank = mysql_query("SELECT Name,Level,Class,Online FROM entities ORDER BY Level DESC LIMIT $limit"); I'm pretty sure that is right... whenever I do while ($row = mysql_fetch_array($rank)) { ... } It always gives me a mysql_fetch_array error. I've checked and the database is populated, the columns exist, so what could be the issue?
Change Query class?
01/14/2010 - EO PServer Hosting - 1 Replies
Hello friends. by gentele someone could help me with any query exchange class as to testing my serves and has no class switching could someone help me please?? Thank you friends and friends :o



All times are GMT +2. The time now is 06:26.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.