MySQL C++ Problem

Odpowiedz Nowy wątek
2013-04-23 21:11

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0

Witam,
Mam pewien problem otóż nie wiem jak rezultat skonwertować na zmienną char
korzystam z tego przykładu:
http://dev.mysql.com/doc/refm[...]mples-complete-example-1.html

tam jest coś takiego

 while (res->next()) {
    cout << "\t... MySQL replies: ";
    /* Access column data by alias or column name */
    cout << res->getString("_message") << endl;
    cout << "\t... MySQL says it again: ";
    /* Access column fata by numeric offset, 1 is the first column */
    cout << res->getString(1) << endl;
  }

a chce aby było takie

 while (res->next()) {
    zmiennaChar = res->getString(1);
  }

Czy ktoś ma jakiś pomysł ?

Proszę o pomoc.

edytowany 1x, ostatnio: lukaszml, 2013-04-23 21:12

Pozostało 580 znaków

2013-04-23 21:31

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

0

Podejrzewam: zmiennaChar = res->getString(1).c_str();


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-04-23 22:07

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0

Mam coś takiego:


while (res->next()) {
    const char * test = (res->getString(1).c_str());
    MessageBox(NULL,LPCWSTR(test), NULL,MB_OK);
}

i zwraca mi dosłownie po chińsku :)

Pozostało 580 znaków

2013-04-23 22:18

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

0

Ustaw kodowanie klienta na Unicode


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-04-23 22:33

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0

Jak mogę to ustawić ?

Pozostało 580 znaków

2013-04-23 22:35

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

0

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2013-04-23 22:50

Rejestracja: 7 lat temu

Ostatnio: 6 lat temu

0

Mam ustawiona na utf8 a zmienić nie mogę bo to na db4free.net

@EDIT

ROZWIĄZANE, pierwsze na string potem na char.
_13th_Dragon dziękuje za naprowadzenie na ".c_str();" :)

std:string str = res->getString(1).c_str();
int TempNumOne=str.size();
char test[2000];
for (int a=0;a<=TempNumOne;a++)
{
     test[a]=str[a];
}
edytowany 2x, ostatnio: lukaszml, 2013-04-23 23:42
Pokaż pozostałe 2 komentarze
Jak chcesz gotowca to podaj dostęp do bazy i zaproponuj kwotę za usługi, lub zacznij wreszcie myśleć, sprawdź co ta baza oferuje (jakie charsety) sprawdź jak ten unicode się nazywa, w jakim trybie masz to zapiusane itd i itp. - _13th_Dragon 2013-04-23 23:09
Problem chyba gdzie indziej tkwi bo wywołałem sobie konsole i cout << test << endl << res->getString(1) << endl; test to jest const char * test = (res->getString(1).c_str());. i zwraca tylko res->getString(1) zaś test nie - lukaszml 2013-04-23 23:14
Co znaczy zwraca? - _13th_Dragon 2013-04-23 23:17
w konsoli wypisuje mi dana wartość tabelki powinno dwa razy a wypisuje puste miejsce i raz. Ale zrobiłem coś takiego: cout << res->getString(1).c_str() << endl << res->getString(1) << endl; i wypisuje oba czyli coś ja źle konwertuje - lukaszml 2013-04-23 23:20
O rzesz. Może poczytaj o string: http://www.cplusplus.com/reference/string/string/ res->getString(1) zwraca takiego string'a owszem możesz go skonwertować na char ale tymczasowo, bo za chwile obiekt znika. Przechowuj nie w char tylko bezpośrednio w string'ach, "konwertując" tylko chwilowo na potrzeby chwili. Zabierasz się za bazy danych kompletnie bez podstaw języka - jakieś zboczenie? - _13th_Dragon 2013-04-23 23:42

Pozostało 580 znaków

2013-04-23 23:47

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

0
std:string str=res->getString(1);
char test[1025]={0};
strncpy(test,str->c_str(),sizeof(test)-1);

lub:

std:string str=res->getString(1);
char *test=strcpy(new char[str.size()+1],str.c_str());
// używamy test;
delete[] test; // zwolniamy test

lub:

std:string str=res->getString(1);
// i używaj sobie dalej tego str bez dziwacznych konwersji

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz

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