LibMySQL w wxWidgets

0

Witam,
mam do napisana program w wxWidgets który ma się łączyć z bazą MySQL, ponieważ program ma być docelowo pod winde a ja wole kodzić po ubuntu postanowiłem skorzystać z libMySQL.

Co prawda wxWidgets posiada klase do obsługi baz danych ale nie udało mi się nią połączyć ani z pod windy ani z pod linuxa.

Z bazą łącze się bez problemu i pobieram rekordy tylko jest pewien problem z wyświetlaniem danych

wxString TextBuffer;
(...)
TextBuffer.Printf(wxT("%s"),row[0]);// najpierw do zmiennej wxString
Grid1->SetCellValue(i,0,TextBuffer);// i do grida
printf("%s ",row[1]);// no i do konsoli

i teraz pod ubuntu:
do grida wczytywane są krzaki
w konsoli są prawidłowe wartości
pod win:
błąd krytyczny system windows zakończył działanie programu
w konsoli czysto (żadnych wyników/komunikatów)

macie może jakieś pomysły jak to wczytać ??

0

do grida wczytywane są krzaki
w konsoli są prawidłowe wartości

Do grida czytasz row[0], do konsoli row[1] ;) To po pierwsze. Po drugie, masz 100% pewność, że w row jest poprawny string zakończony zerem? Jak wygląda sprawa z kodowaniem? Po trzecie: użyj debuggera.

Akcja z Printfem jest zupełnie bez sensu. Wystarczy, że dasz:

TextBuffer = row[0];
/* albo od razu */
Grid1->SetCellValue(i,0,row[0]);
0
0x666 napisał(a)

Do grida czytasz row[0], do konsoli row[1] ;) To po pierwsze.

małe przeoczenie ale i tak nie działa (kolumny 0 i 1 istnieją więc to nie powinno powodować błędów)

0x666 napisał(a)

Po drugie, masz 100% pewność, że w row jest poprawny string zakończony zerem? Jak wygląda sprawa z kodowaniem?

nie mam :D można to jakoś sprawdzić ?? sory za tak laickie pytania ale z cpp nigdy za wiele do czynienia nie miałem
co do kodowania
cały wxWidgets jest w utf-8 (więc grid również)
baza jest w utf-8
wiem jeszcze że z row[X] można wyciągnąć dane jako SQLCHAR* a typ SQLCHAR to unsigned char

0x666 napisał(a)

Akcja z Printfem jest zupełnie bez sensu. Wystarczy, że dasz:

TextBuffer = row[0];
/* albo od razu */
Grid1->SetCellValue(i,0,row[0]);

niestety nie
do wxString mogę przypisać bezpośrednio int inny wxString lub wxChar
jeśli chciałbym wykorzystać np. std::string czy char* muszę już użyć printf

0

można to jakoś sprawdzić ??

W dokumentacji libMySQL, czy czego tam używasz...

cały wxWidgets jest w utf-8 (więc grid również)
baza jest w utf-8

Oj, pod windowsem wx'y śmigają w utf-16. Którą wersję biblioteki masz?

Pewniej będzie tak:

TextBuffer = wxString::FromUTF8(row[0]);

Grid1->SetCellValue(i,0,wxString::FromUTF8(row[0]));
0

mistrzu jesteś wielki :)
ze dwa tygodnie szukałem jak to zrobić a tu odpowiedz okazuje się taka prosta ;)
oczywiście windows jeszcze stwarzał problemy ale już wszytko działa

jeszcze raz wielkie dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1