Windows Form Application i MySQL w C++

W tym poście opisze problem, na którego rozwiązanie poświęciłem całą środę. Jak oczywiście się okazało rozwiązanie było banalne, ale nie narzekam, bo przy poszukiwaniu błędu nauczyłem się wiele nowego (bardziej zrozumiałem istotę CLR, znalazłem świetny tutorial do Windows Form, etc.). Jest wiele możliwości połączenia aplikacji napisanej w języku C++, z bazą danych MySQL. Jednym z nich w którego istotę się jeszcze nie zagłębiłem, jest: ODBC (Open Database Connectivity) – można sobie wygooglować, jest mnóstwo materiałów. Inną metodą już bardziej mi znaną jest skorzystanie z dostarczonych przez MySQL tak zwanych connector’ów. Najprostszym connectorem do połączenia jest Connector/C, najprostszym bo jego instalacja (załączanie plików nagłówkowych i karmienie linkera) przeszła bezproblemowo, jest to connector napisany w C. Więcej problemów było już z tym z języka C++, po pierwsze brakowało w nim jednego pliku nagłówkowego, a po drugie w większości tutoriali użyta przestrzeń nazw nie zgadzała się z tą w zamieszczonych plikach nagłówkowych i tzeba było używać innej i nawet funkcje się nie które nie zgadzają. Pojawiał się też inny problem, bo jak głosi tytuł artykułu chcemy się połączyć z MySQL w .NET pisząc w C++, a niektóre klasy służące do połączenie z bazą danych (i na nieszczęście ta której jeszcze brakuje) korzystają właśnie z typu String i przy kompilacji tradycyjnie wyskakuje error, dzieje się ta przez zastosowanie wspólnego środowiska języka uruchomieniowego – CLR (to akurat już zostało opisane w jednym z poprzednich postów), przez którego pojawia się problem z typem String w tego typu aplikacjach (nie wiem jak w przypadku tego connectora napisanego w C, bo nie sprawdzałem, ale prawdopodobieństwo niepowodzenia wydaje się spore, ponieważ String pojawia się też w zwykłym C). Instalacja obydwu tych connectorów przebiega podobnie: linkowanie i dodawanie plików nagłówkowych…

Przejdźmy dalej do connectora .NET’owskiego, przy którym to straciłem najwięcej czasu. Oczywiście na wstępie jak ktoś zna tą wtyczkę to zdziwi się, że korzystałem z niej pisząc w C++. Oczywiście ten ktoś ma rację, ale niestety ten język został mi niejako narzucony przez zespół, mimo że łatwiej i wygodniej byłoby pisać w C#, który to w dodatku jest wspierany przez MySQL najnowszymi aktualizacjami. Tu też pojawia się pułapka, bo najnowsza wersja connectora nie wspiera C++ i można się dwoić i troić (uwierzcie mi na słowo;D ) dlaczego do pliku z wcześniej dodaną referencją, nie da się załączyć przestrzeni nazw. Działającą jeszcze w C++ jest na pewno wersja  “MySQL Connector Net 5.2.7”, którą można pobrać ze strony MySQL, z archiwum, którego trzeba sobie poszukać za pośrednictwem linka podanego powyżej. Instalacja tego connectora polega na dodaniu referencji do dynamicznego pliku MySQL.Data.dll, należy pamiętać o włączenie przestrzeni nazw MySql::Data::MySqlClient w kodzie programy. Przykładowy tutorial połączenia z bazą danych można znaleźć tutaj i tutaj.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s