Baza danych jest niezbędna w obecnych systemach informatycznych, a także w niektórych programach przetwarzających dużą ilość danych. Platforma .NET jest doskonale dostosowana do integracji z MS SQL. MS SQL to bardzo wydajna, przy czym niezawodna, a także skalowalna baza danych. Wszystko byłoby piękne, jednak rozwiązanie takie jest płatne.
Microsoft niedawno wprowadził na rynek swój nowy produkt Windows Azure (względnie niedawno 2010r.), potocznie nazywaną chmurą. Chmurka zyskała dużą popularność wśród deweloperów Windows Phone. W Windows Strone odnajdziemy stos aplikacji wymagających przechowywania informacji, które zintegrowane są z Azure, czego częściowo „wymusza” Microsoft. Pomijając ten fakt, rozwiązanie takie jest całkiem ciekawe. Programista nie musi się już martwić o optymalizacje i skalowanie. Windows Azure sam przydziela odpowiednie zasoby w zależności od ilości wykonywanych zapytań do chmurki.
Jak widać MS zapewnia swoim deweloperom dużo potencjalnych rozwiązań dotyczących baz danych, jednak wszystkie są płatne, nie wliczając wersji testowych i express…
Pewnego rodzaju alternatywą jest darmowa baza danych, przez co głównie lubiana a mianowicie MySQL.
Chciałbym zaprezentować, w jak prosty sposób zintegrować bazę danych wraz z serwerem MySQL. Użytkownicy nowszej wersji VS zapewne zauważą, że biblioteka służąca do komunikacji z MySQL zniknęła. Ciekawe… Dlaczego? Konieczne więc jest odnalezienie takie .dll w internecie.
Pierwszym etapem będzie zadeklarowanie zmiennych globalnych klasy:
MySqlConnection connect; // zmienna referencja pozwalająca na nawiązanie połączenia z BD MySqlDataReader read; // zmienna referencyjna wykonująca zapytanie oraz pobierająca odpowiedź z bazy string server = "000.00.000.00"; // IP serwera bazy danych string dataBase = "exampleDataBase"; // nazwa bazy danych string user = "exampleUser"; // użytkownik bazy danych string password = "examplePass"; // hasło bazy danych
Na tym etapie warto wspomnieć, że większość usługodawców hostingowych domyślnie ma wyłączone zdalne łączenie się z bazą danych. Musimy zadbać o to, aby nasza baza zezwalała na zdalną komunikację. Najprościej robi się to, dodając własne IP w konfiguracji bazy danych jako zaufane.
Gdy mamy już zadeklarowane zmienne oraz poprawnie wypełnione jej wartości, należy zainicjować zmienną typu MySqlConnection oraz zbudować tzw. String connection. Robimy to w ten sposób:
connect = new MySqlConnection(); connect.ConnectionString = string.Format("Server = {0}; Database = {1}; Uid = {2}; Pwd = {3};", serwer, dataBase, user, password);
Kod jest na tyle prosty, że nie trzeba go nawet tłumaczyć. Wspomnę tylko, że ConnectionString ma stałą, niezmienną budowę, jak widać to w kodzie powyżej, gzie w pierwszej kolejności podajemy nazwę serwera (domenę czy też IP), nazwę bazy danych, użytkownika oraz hasło.
Poniżej przykład zapytania wraz z komentarzami objaśniającymi
string selectDataBase = string.Format("USE {0};", dataBase); string query = selectDataBase + "SELECT * FROM Table1"; MySqlCommand comand = new MySqlCommand(query, connect); try { // wykonaj zapytanie read = comand.ExecuteReader(); // czytaj odpowiedz while (read.Read()) { // rzutowanie wyniku na krotke IDataRecord record = ((IDataRecord)read); // FieldCount zwraca liczbę kolumn for (int i = 0; i < read.FieldCount; i++) { TextBoxResult.Text += record[i] + " "; } TextBoxResult.Text += "rn"; } read.Close(); MessageBox.Show("Request completed successfully", "Ok!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } catch (Exception ex) { MessageBox.Show(ex.StackTrace, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
Gotowe. Teraz możemy w pełni cieszyć się i korzystać z bazy danych z poziomu swojego programu. W podsumowaniu chciałem powiedzieć jeszcze o dwóch rzeczach.
Wadą tego systemu jest przymus dodawania adresu komputera korzystającego z aplikacji do systemu bazodanowego w celu uzyskania autoryzowanego dostępu. W przypadku braku tego wpisu informacji najzwyczajniej nie dostaniemy się do bazy danych. Z pomocą przychodzą nam web serwisy, które są sposobem ominięcia problemu.
Kolejny problem dotyczy tworzenia połączeń z bazą danych. Takie połączenie, jakie stworzyłem w tym przykładzie, jest naganne w przypadku oprogramowania aplikacji korzystającej z bazy danych. Dla tych celów używa się wzorców projektowych. W tym przypadku będzie to Singleton.
Wpisy dotyczące tworzenia web serwisów oraz wzorce singletona do nawiązywania połączeń z bazą danych znajdziesz na moim blogu. Zapraszam do lektury.