Połączenie C# z bazą danych SQL Server

W języku C# mamy możliwość budowania bazodanowych aplikacji okienkowych. Jednak nic nie stoi na przeszkodzie, aby do połączenia z bazą danych wykorzystać tryb konsoli. Napiszemy teraz prosty program, który będzie łączył się z bazą danych i wyświetlał rekordy tabeli. Nie będziemy przy tym korzystać z żadnych kreatorów. Cały kod napiszemy „ręcznie”, co umożliwi dokładne poznanie mechanizmów połączenia. Zanim przystąpimy do pisania programu, musimy przygotować bazę danych.

Przed przystąpieniem do tego przykładu, zalecam zapoznanie się z artykułami:

  1. http://leszek-klich.pl/2016/09/19/ms-sql-management/
  2. http://leszek-klich.pl/2016/09/19/podstawy-ms-sql-server/

Posługując się MS SQL Management Studio Express lub wbudowanego narzędzia utwórz nową bazę adresy. W nowo utworzonej bazie utwórz tabelę o nazwie adres. W tabeli utwórz pola rekordu, jak na obrazku poniżej.

tworzeniebazysql

Oprócz pól definiujących dane adresowe kontaktu, w tabeli istnieje pole Id. Pole to zdefiniowaliśmy z myślą o wykorzystaniu w przyszłości. Pole Id będzie nam potrzebne podczas relacyjnego łączenia tabeli adres z innymi tabelami. Założenie pola Id jest takie,  by zawierało zawsze niepowtarzalny identyfikator wyróżniający rekord w tabeli. Osiąga się to w prosty sposób poprzez zaznaczenie pole Id i włączeniu w rozwiniętych właściwościach Identity Specification właściwości (Is identity) na Yes. Dodatkowo zaznaczając pole i używając prawego klawisza myszy wywołujemy menu podręczne, zawierające opcję Set Primary Key. Pole Id będzie teraz kluczem głównym. Możesz teraz zapisać nową tabelę. Nadaj jej dowolną nazwę. Ja nazwałem tabelę „adres”. Możesz już zamknąć Microsoft SQL Server Management i przejść do Visual Studio Express. Utwórz nowy projekt Console Application, nadaj mu dowolną nazwę i zaprogramuj.

W sekcji using musisz zadeklarować biblioteki odpowiedzialne za bazy danych:

using System.Data.SqlClient;
using System.Data;

natomiast w sekcji Main wpisz następujący kod:

 try
   {
   SqlConnection polaczenie = new SqlConnection(@"Data source=SERWER\SQLEXPRESS;
                                                             database=adresy;
                                                             User id=sa;
                                                             Password=haslo;");
   polaczenie.Open();
   SqlCommand komendaSQL = polaczenie.CreateCommand();
   komendaSQL.CommandText = "SELECT * FROM adres";
   SqlDataReader czytnik = komendaSQL.ExecuteReader();

   Console.WriteLine("Wiersze tabeli:");
    while (czytnik.Read())
     {                  
     Console.WriteLine(czytnik ["nazwisko"].ToString() + "   " + czytnik["imie"].ToString() + "   " + czytnik["adres"].ToString() + "   " + czytnik["kodp"].ToString() + "   " + czytnik["poczta"].ToString());
     }
  czytnik.Close();
  polaczenie.Close();
                
  Console.ReadKey();
    }
 
  catch (SqlException e)
     {
      Console.WriteLine(„Wystąpił nieoczekiwany błąd!”);
      Console.WriteLine(e.Message);
      Console.ReadKey();
     }
 }

Komentarza wymaga linia odpowiedzialna za połączenie z bazą danych:

 SqlConnection polaczenie = new SqlConnection(@"Data source=SERWER\SQLEXPRESS;
                                                             database=adresy;
                                                             User id=sa;
                                                             Password=haslo;");

W linii tej, jako parametry podaj nazwę swojego serwera bazy danych. Jeśli nie wiesz, jaką nazwę ma twój serwer, możesz jako nazwę podać LOCALHOST\SQLEXPRESS. Nazwy dostępnych serwerów wyświetlane są w Microsoft SQL Server Managament w okienku logowania. Domyślnym użytkownikiem serwera MS SQL Server jest sa, hasło zdefiniowałeś prawdopodobnie podczas instalacji serwera. Dzięki zastosowaniu bloku obsługi błędów try .. catch, w przypadku wszelkich niepowodzeń nasz program wyświetli stosowny komunikat z informacją o błędzie.



Kolejnym krokiem jest utworzenie komendy SQL, która posłuży do odczytu wszystkich wierszy tabeli. W naszym przypadku jest to bardzo prosta kwerenda SELECT * FROM adres. Komendę możesz modyfikować, aby np. wyświetlić z tabeli tylko rekordy spełniające określone warunki. Więcej na temat tworzeniu kwerend dowiesz się w rozdziale poświęconym podstawom języka SQL. SqlDataReader jest swego rodzaju buforem, w którym znajduje się cała odczytana struktura tabeli. Jest ona odwzorowaniem oryginalnej tabeli w bazie. Przykład odwołania do każdego wiersza znajduje się w instrukcji while(). Za pomocą odwołania czytnik[„nazwisko”].ToString() można odwoływać się do dowolnego pola w tabeli.

Kod źródłowy:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient; // Dodajemy
using System.Data; // Dodajemy obsługę SQL

namespace ProstaBaza
{
    class Program
    {
           static void Main(string[] args)
        {

            try
            {
                SqlConnection polaczenie = new SqlConnection(@"Data source=LESZEK-KLICH\SQLEXPRESS;database=adresy;User id=sa;Password=zaq12wsx;");
                polaczenie.Open();
                SqlCommand komendaSQL = polaczenie.CreateCommand();
                komendaSQL.CommandText = "SELECT * FROM adres";
                SqlDataReader thisReader = komendaSQL.ExecuteReader();

                Console.WriteLine("Wiersze tabeli:");
                while (thisReader.Read())
                {                  
                    Console.WriteLine(thisReader["nazwisko"].ToString() + "   " + thisReader["imie"].ToString() + "   " + thisReader["adres"].ToString() + "   " + thisReader["kodp"].ToString() + "   " + thisReader["poczta"].ToString());
                }
                thisReader.Close();
                polaczenie.Close();
                
                Console.ReadKey();

            }
            catch (SqlException e)
            {
                Console.WriteLine(e.Message);
                Console.ReadKey();
            }

        }
           }
}

 

5243total visits,4visits today

Tagi , , , .Dodaj do zakładek Link.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

62 + = 65