Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Pavel 13. 08. 2012, 13:33:58
-
Nemá někdo vzorový funkční zdroják pro práci s MySQL v C++?
-
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp.html
...
-
Priprav se, je to opruz nejvetsi.
-
No tak pod C je to teda brnkacka, ale tohle je teda mega marast...
-
No tak nic ...
Asi zustanu u C knihovny :o/
Tohle mi přijde zbytečně složitý
-
dyt je to uplne jednoduche objektove pouziti
-
http://tangentsoft.net/mysql++/
#include <mysql++/mysql++.h>
...
mysqlpp::MultiStatementsOption* dboption = new mysqlpp::MultiStatementsOption(true);
dbconn.set_option(dboption);
cout<<"I: connecting to database server ..."<<endl;
if (dbconn.connect("meno databazy", "ip adresa alebo hostname", "username", "password"))
{
cout<<"Mysql connect OK"<<endl;
}
else
{
cerr<<"FAtal error: "<<dbconn.error()<<endl;
exit(1);
}
....
/funkcia co vrati NULL alebo priezvisko ktoré prislúcha menu
char* funkcia_simple_select(mysqlpp::Connection &dbconn, const char* meno)
{
char* ret = NULL;
if(mysqlpp::Query query = dbconn.query())
{
query << "SELECT priezvisko FROM tabulka WHERE meno=" << mysqlpp::quote << meno;
if (mysqlpp::StoreQueryResult res = query.store())
{
if(!res.empty())
{
ret = new char [strlen(res[0][0])+1];
strcpy(ret,res[0][0]);
}
}
else cout<<"QUERY: "<<query.error()<<endl;
}
else cout<<"CONNECTION: "<<dbconn.error()<<endl;
return ret;
}
//funkcia na pridavanie
bool funkcia_simple_insert(mysqlpp::Connection &dbconn, const char* meno,const char* priezvisko)
{
bool ret=0;
if(mysqlpp::Query query = dbconn.query())
{
query << "INSERT INTO tabulka (meno,priezvisko) VALUES(" << mysqlpp::quote << meno << "," << mysqlpp::quote << priezvisko << ")";
if(query.exec())
{
ret=1;
}
else cout<<"query error: "<<query.error()<<endl;
}
return ret;
}
-
DK > použití je opravdu jednoduche ale zprovoznění je pěkne na..... Viz: One problem that can occur is when the tools you use to build your application are not compatible with the tools used to build the binary versions of MySQL Connector/C++. Ideally, you need to build your application with the same tools that were used to build the MySQL Connector/C++ binaries.
Bojoval jsem s tím několik hodin a stačilo mě. Mysql++ zase špatně komunikoval s balíkem Boost a nepodařilo se kompilovat. Pokud je to pro tebe jednoduché prosím napiš sem stručný návod.
-
Ja som zatiaľ žiadny problém nemal. Všetko šľapalo vždy ako malo. Všetko som inštaloval z debian repozitárov. Problém môže nastať, keď mysql knižnice linkuješ dynamicky a prejdeš na iný systém, vtedy by sa zišlo dodávať k binárke aj mysql knižnice.
-
Lze si vystačit s C knihovnou a napsat si jednoduchý wrapper. Ta C knihovna je podobná jako v PHP.
-
Lze si vystačit s C knihovnou a napsat si jednoduchý wrapper. Ta C knihovna je podobná jako v PHP.
PS: Abych namlsal, mám wrapper, se kterým se pracuje takto:
while(sqlconn.start()) try {
MySQL::Result res = sqlconn("SELECT * FROM %1 WHERE `id`=%2")
.field(tableName).arg(curId).exec();
while (res.hasItems()) {
MySQL::Row r = res.getNext();
int cols = res.countFields();
for (int i = 0; i < cols; i++) if (! r[i].isNull() ){
String key = res.getFieldName(i);
String val = r[i];
//... zkraceno ...
}
}
} catch (const MySQL::ServerError_t &e) {
sqlconn.except(e,THISLOCATION);
}
sqlconn.commit();
Řeší i deadlock v transakci (proto ten while). Ale zatím není open source (možná někdy bude). Takže jen pro inspiraci