C/C++ via MySQL

11/21/2012 17:15 damona#1
Hallöchen,
und zwar ich suche schon seit geraumer Zeit ein tutorial oder nen Buch wo erklärt wird wie man mit c/c++ in der console mit dem c++ connector mit mysql verbindung kann sowie querys (select/update/insert) ausführen kann. Die bisherigen tut waren alle mist bzw. haben nicht funktioniert (meist odbc treiber den ich eher meiden will)

würde mich über nen link oder nen namen eines Buches freuen.
11/21/2012 17:59 Tyrar#2
als erstes hast du einen ptr auf ein "sql::Driver" objekt.
Code:
sql::Driver* gDriver = nullptr;
...
gDriver = get_driver_instance();
weiter gehts mit einer connection
Code:
sql::Connection* gConnection = nullptr;
das driver objekt hat eine member func namens "connect", ich denke der name erklärt schon was die macht. diese funktion returned einen ptr des connection objekts.
Code:
gConnection = gDriver->connect(mysql_host, mysql_user, mysql_password);
damit wäre schon eine verbindung hergestellt.
wenn man jetzt eine database auswählen will ist das auch noch recht easy:
Code:
gConnection->setSchema(mysql_database);
jetzt zu dem wichtigen kram wie queries :)

den kann man z.b. auf diese art ausführen:
Code:
sql::PreparedStatement* statement = gConnection->prepareStatement("SELECT * FROM table WHERE 1"); // query vorbereiten, im nächsten beispiel mehr ;)
sql::ResultSet* result = statement->executeQuery(); // und ausführen
man kann das auch noch etwas fortführen:
Code:
sql::PreparedStatement* statement = gConnection->prepareStatement("SELECT * FROM table WHERE name = ?"); // query vorbereiten, das ? ist ein platzhalter!
statement->setString(1,mysql_name); // den platzhalter mit dem string 'mysql_name' ersetzen!
sql::ResultSet* result = statement->executeQuery();
verarbeiten von dem ergebnis
Code:
if(result->next()) // im prinzip ist das mysql_fetch_row
    varString = result->getString(1); // alternativ kann die 1 auch der name eines fields sein!
wenn eines der objekte nicht mehr benötigt wird einfach mit "delete" löschen :)

ist zwar auch nicht das beste was man bekommen kann, mehr habe ich dazu allerdings auch nicht rausgefunden :o
11/21/2012 18:24 damona#3
@heavyhacker
dank dir hat mir schon einiges weiter geholfen auf jeden fall besser als das was ich bis jetzt gefunden, jetzt ist das auch einleuchtend mit den Querys da die meisten Tutorials das komplett anders ausgeführt haben ;D da ich von Java komme ähnelt deine Query Ausführung ;D
11/23/2012 07:23 Tyrar#4
Quote:
Originally Posted by damona View Post
@heavyhacker
dank dir hat mir schon einiges weiter geholfen auf jeden fall besser als das was ich bis jetzt gefunden, jetzt ist das auch einleuchtend mit den Querys da die meisten Tutorials das komplett anders ausgeführt haben ;D da ich von Java komme ähnelt deine Query Ausführung ;D
tja das ist auch nur das was ich hauptsächlich selbst rausgefunden habe... die doku ist echt ziemlich müllig ;)
11/24/2012 00:26 damona#5
Quote:
Originally Posted by HeavyHacker View Post
tja das ist auch nur das was ich hauptsächlich selbst rausgefunden habe... die doku ist echt ziemlich müllig ;)
So Jetzt nur noch linker error:
error LNK2001: Nicht aufgelöstes externes Symbol "_get_driver_instance".

weiß einer wie ich das beheben kann ?