Kodowanie polskich znakow - problem miedzy C# a MySQL

0

napisałem sobie w MySQL bazę, jednak są problemy z używaniem jej w C# ze względu na problemy z kodowaniem znaków. Mianowicie nie przenosi mi żśćąś natomiast przenosi mi ó. Do rzeczy:

  1. baza jest w kodowaniu utf-8
  2. W C# korzystam z odpowiedniej dll-ki która udostępnia następujące metody z których korzystam

//polaczenie
MySql.Data.MySqlClient.MySqlConnection msc1 = new MySql.Data.MySqlClient.MySqlConnection("datasource=localhost;username=root;password=mojpassword;database=pacjenci");

//dodanie wpisu do bazy
MySql.Data.MySqlClient.MySqlCommand mc1 = new MySql.Data.MySqlClient.MySqlCommand("insert.....", msc1);

oczywiscie w "insert into pacjenci.." jest dalej string wzięty z text boxa tak żeby w bazie powstał odpowiedni wpis.

Jak potem grzebie w bazie to się okazuje ze nie ma tam odpowiednich znaków (żźćąśł) a jest ó. Oczywiście przy wyświetlaniu tych danych w programie również nie ma tych znaków.
Korzystam z VS2008 i C# (Vista x64 PL). Nie zmieniałem nic w kodowaniu w programie bo szczerze mówiąc nie wiem jak to zmienić żeby było ok.

0
  1. poprzez C# insert'uj do bazy jakis rekord, powiedzmy osoba (id=99, nazwisko="ąęóżń")
  2. poprzez C# select'uj osobe/id=99 i obejrzyj jej nazwisko
  • bardzo mozliwe, ze C# odbierze napis poprawnie. jesli tak sie stalo, to znaczy nic innego, jak tylko to, ze kodowanie na bazie jest inne niz locale po stronie C#, albo ze wrecz w ogole nie ma obslugi tego i dane leca binarnie i baza zapisuje je wprost. stad, C# to co wyslal rozumie prawidlowo, a baza odpytywana zewnetrznym narzedziem (commandlinem, etc) - stara sie to wyswietlic w locale innym i 'brzdęk'. imho, mozesz olac

  • jesli C# tez odbierze smieci, to znaczy ze w ogole baza zle zapisala dane, najprawdopodobniej problem w tym, ze C# wysyla unicode (2b per znak, brak stron kodowych), a dllka/baza spodziewaja sie ansi (1b per znak, plus ustawienie strony kodowej). czyli nie mozesz olac, trzeba albo zmusic C# do wysylania ansi, albo baze do przyjmowania unicode - nie wiem jak mysql, ale taki mssql daje mozliwosc ustawienia kodowania bazy danych/tablic/kolumn na inne niz domyslne.. ale tylko podczas ich TWORZENIA, mozliwe wiec ze czeka Cie wymiana tablic/kolumn

0
MySql.Data.MySqlClient.MySqlConnection msc1 = new MySql.Data.MySqlClient.MySqlConnection("datasource=localhost;username=root;password=mojpassword;database=pacjenci;charset=utf8");

I wszystko śmiga... (powinno ;-) )

0

Działa !

0

Przy okazji chciałbym się zapytać ludzi mądrych z MySQL jak wrzucać najlepiej to bazy MySQL pliki ? (W sensie moja aplikacja np tworzy jakiś plik i chciałbym żeby pliki po stworzeniu zostały wrzucane do bazy). Idea jest taka że plik tworzony jest jako tymczasowy , po skończeniu zapisu do pliku ma nastąpić wrzucenie go do bazy. Czyli jest jakby taki plik roboczy który po skończeniu jest ładowany do bazy, przy kolejnym tworzeniu pliku dalej robimy to jakby w tymczasowym pliku i ładujemy do bazy jako kolejny plik. Jak rozwiązać to w MySQL (jestem zielony z tego) w sensie jakimi poleceniami ładować i pobierać takie coś z/do bazy. Byłbym uradowany jakby ktoś mi jeszcze powiedział jak to stosować z użyciem tych klas w C# z biblioteki dll, o których pisałem powyżej.

0

Z zaciągnięciem pliku do bazy MySQL będzie ciężko. Chyba, że stoi na tym samym serwerze, an którym wykonujesz program.
W każdym razie ja bym to zrobił tak: program tworzy plik, bierze plik i wrzuca jego zawartość jako polecenie i wykonuje. :-|

0

Tak - zawsze aplikacja będzie stała na tym samym kompie co serwer (czytaj - jest to po prostu aplikacja samodzielna na pojedynczej stacji)

0

sprawdz czy toolset przychodzacy z myslq nie obsluguje aby czegos takiego jak BULK INSERT. to nie koniecznie jest komenda bazy, przy mysql predzej - osobna aplikacja. dzieki temu, jelsi pliki beda odpowiednio przygotowane, import do bazy pojdzie relatywnie szybko

edit: ah.. zakladam ze masz DUUUUZOOO danych do zaladowania.. jak nie sa to dziesiatki megabajtow, lec na chama jak darkthal mowi

0

raczej nie powinno przekraczać 1 MB

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