#include <wx/dbtable.h>
Ez a példaprogramrész, feltételez egy „HelyiMySQL” néven regisztrált adatbázist az ODBC bejegyzések között. Ellenőrzéshez futtassa a következő programot:
odbcad32.exe
Ugyanezt elérheti a következő útvonalon is:
Vezérlőpult -> Felügyeleti eszközök -> ODBC adatforrások
Megjegyzés: Ha telepítette az MySQL ODBC Drivert, akkor csak fel kell vennie egy új ODBC bejegyzést.
wxDbConnectInf *DbConnectInf = NULL; // DB connection information wxDb *db = NULL; // Database connection DbConnectInf = new wxDbConnectInf(NULL, wxT("HelyiMySQL"), wxT("root"), wxT("")); // Hiba ellenőrzése: if (!DbConnectInf || !DbConnectInf->GetHenv()) wxMessageBox(wxT("Az ODBC kapcsolat nem elerheto")); // Adatbázis-kapcsolat létrehozása db = wxDbGetConnection(DbConnectInf); if (!db) wxMessageBox(wxT("Nem tudok kapcsolodni az adatbazishoz")); //Tábla létezésének ellenőrzése if(db->TableExists(wxT("szemelya"))) wxMessageBox(wxT("Van ilyen tabla")); else wxMessageBox(wxT("Nincs ilyen tabla"));
Ez a példaprogram-rész, feltételez egy „HelyiMySQL” néven regisztrált adatbázist az ODBC bejegyzések között.
wxDbConnectInf *DbConnectInf = NULL; wxDb *db = NULL; DbConnectInf = new wxDbConnectInf(NULL, wxT("HelyiMySQL"), wxT("root"), wxT("")); if (!DbConnectInf || !DbConnectInf->GetHenv()) wxMessageBox(wxT("Az ODBC kapcsolat nem elerheto")); db = wxDbGetConnection(DbConnectInf); if (!db) wxMessageBox(wxT("Nem tudok kapcsolodni az adatbazishoz")); wxString sql = wxT("SELECT * FROM szemely"); if (!db->ExecSql(sql.c_str())) wxMessageBox(wxT("Gond a lekeres soran")); wxChar er[255]; //Ebben tároljuk majd a választ while(db->GetNext()) { SDWORD meret; db->GetData(3, SQL_C_WXCHAR, &er, 255, &meret); wxMessageBox(er); //Nézzük milyen eredményt kaptunk }
A példa program első része a kapcsolat és az adatbázis objektum (db) létrehozása, amelyet már fentebb tárgyaltunk.
A lekérdezés összeállítása, amelyet az sql nevű változóban helyezünk el:
wxString sql = wxT("SELECT * FROM szemely");
Itt történik maga a lekérdezés:
db->ExecSql(sql.c_str())
A lekérdezés eredménye a db objektumban van, amelyet a GetData() metódussal nyerhetün ki:
db->GetData(3, SQL_C_WXCHAR, &er, 255, &meret);
SQL_C_CHAR - string - elavult! használd helyette ezt: SQL_C_WXCHAR |
SQL_C_WXCHAR |
SQL_C_LONG |
SQL_C_ULONG |
SQL_C_SHORT |
SQL_C_USHORT |
SQL_C_FLOAT |
SQL_C_DOUBLE |
SQL_C_NUMERIC |
SQL_C_TIMESTAMP |
SQL_C_BOOLEAN - definiálva a következő helyen: db.h |
SQL_C_ENUM - definiálva a következő helyen: db.h |
Minden GetData() metódust meg kell előzzön egy GetNext(), amely a következő rekordot veszi az eredményből:
db->GetNext()
Persze ha eleve több rekord van az eredményhalmazban, akkor tehetjük mindjárt while ciklusba:
while(db->GetNext()) { //ide jön a GetData() }
Az eddig példákban a wxDbTable osztályt nem használtuk, de sok táblakezelési feladata megoldható vele.