C# — MySQL w .NET

Dawno nic nie pisałem o C#  , a jak wiecie lubię w tym jak to wielu mówi „lamerskim” języku skrobnąć aplikację. Tym razem padło na bazy , choć już kiedyś coś pisałem , ale tym razem potrzebowałem czegoś więcej …  od Compacta ..   i nie tak ciężkiego jak MS SQL Server , działającego lokalnie i zdalnie , ale też bez Azure które mnie rozpieszcza …

Wybór wiec był ostatecznie niewielki, ograniczał się do wersji expres i MySQL, postanowiłem więc oswoić delfina z C# …..

Oczywiście nasza platforma .NET jest zestrojona i sprzężona  z MS SQL, który jest naprawdę wydajny i niezawodny, wisienką jest skalowalna baza , jednak dla wielu jest nie do przejścia jeden mały szczegół  —-> płatna.

I tu poniekąd jest alternatywa dla Compacta czy Expresa od MS, a mianowicie MySQL. Oczywiście w celu użycia sieciowej bazy w MySQL wystarczy nam jeden mały dllek

— MySql.Data.dll

któren to gdzieś sobie zniknął z VS zapewne za sprawą czarów lub innych porwań kosmitów itd …  ale możemy pobrac i zainstalować całościowo …  i tu wybrałem sobie

MySQL Community 8.0.19

Sama instalacja jest prosta i przebiega sprawnie , po czym mamy już dostęp do

do MySQL Workbencha gdzie sobie możemy zarządzać w wygodny sposób bazami i nie tylko , ale to w tej chwili mało istotne. Istotą tego wpisu jest połączenie z bazą MySQL w C# , a to może być kłopotliwe …. nawet jeśli posiadamy ów wspomnianą librarkę dll…

Osobiście zwyczajowo ja sobie robię mocno na skróty , albowiem tyle rozwiązań ilu programistów :)

Nie ma w tym wiec nic niezwykłego  conect string  taki sobie  ….. wiec może trochę bardziej elegancko i zrozumiale …   utworzymy sobie kilka zmiennych globalnych :

oczywiście teraz jest czytelniej i łatwiej ogarnąć co i jak zrobić choć powiem wam, że  1 metoda na łączenie sprawdza się gdy łączymy z bazą na sztywno w programie, zaś w/w przykład może pozwolić na łatwiejsze zarządzanie połączeniami z bazą .

Tu warto wspomnieć o małej przypadłości w przypadku korzystania z bazy zdalnej na jakimś hostingu. Mianowicie lwia cześć dostawców usługi domyślnie wyłącza dostęp zdalny do bazy. Musimy wiec sami zadbać o to by  nasza baza na to zezwalała, a najłatwiej to osiągnąć poprzez dodanie naszego IP w konfigu baz jako zaufanego. 

No dobrze wyżej zadeklarowaliśmy sobie zmienne w tej elegantszej wersji :), pozostaje nam zbudować z tych danych które wypełniliśmy poprawny ConnectionString i zainicjować nim zmienną MySqlConnection ……

Widzicie … prosto i skutecznie … oczywiście tak łatwiej nam będzie sprecyzować połączenie z bazą poprzez pola tekstowe i tym samym wybór bazy co może być przydatne.

Zapewne zauważyliście też, że niezależnie od sposobu wywołania , ConnectionString ma stałą i nie zmienną budowę i zawsze podajemy w takiej samej kolejności dane :  serwer , baza danych , user i hasło  .

Tak czy siak połączenie z bazą wykonane i teraz już możemy łatwo sobie ja podpinać tam gdzie jest nam potrzebna z poziomu naszej aplikacji .

Jednak rozwiązanie to nie do końca jest idealne …   o ile pracujemy z bazą hostowaną lokalnie jest przyjemnie , natomiast w przypadku bazy zdalnej  narzucany mamy przymus dodawania IP każdego komputera na którym ma być dostęp do naszej bazy inaczej nie uzyskamy autoryzacji na połączenie z bazą … co w efekcie uniemozliwi dostęp do danych i działanie aplikacji. Niemniej Istnieje kilka sposobów na ominięcie tego problemu.

Oczywiście  prosty i skuteczny dostęp do bazy jak pokazałem tutaj  nie jest  arcydziełem i wręcz jest naganny, a toporność woła o pomstę do nieba, niemniej ma na celu pokazanie że czasem można używać czegoś tak czy inaczej nie zawsze korzystając  z wzorców projektowych np Singletona :) Ale na pewno daje jakiś obraz jak zacząć :)