IRONSOFTWAREHOME

C# SQL Tutorial Połączenie: Dapper + Baza danych SQL Server wyjaśnione

C# App Start To Finish Lesson 10 - SQL Connection

Tim Corey

1h 15m 23s

W lekcji 10 serii "C# App Start to Finish" Tima Corey'a, Tim wyjaśnia, jak połączyć aplikację C# z bazą danych SQL Server używając Dapper. W poprzedniej lekcji aplikacja używała fałszywej warstwy dostępu do danych, która tylko udawała komunikację z SQL. W tym filmie, Tim zastępuje ten kod zastępczy prawdziwą logiką połączenia SQL i pokazuje, jak skonfigurować prawdziwe połączenie z bazą danych w sposób czysty, skalowalny i łatwy do utrzymania.

Artykuł ten rozbija kluczowe pojęcia, które Tim omawia i wyjaśnia je w sposób zrozumiały, nawet jeśli jesteś nowy w połączeniach C# SQL lub SQL Server.

Konfiguracja projektu i porządkowanie

Tim rozpoczyna przeglądem struktury rozwiązania i potwierdza zmiany wprowadzone w poprzedniej lekcji. W Program.cs wyjaśnia, że dodał kod, aby połączyć się zarówno z SQL Server, jak i z bazą danych w pliku tekstowym, oraz zmienił formularz startowy na "Create Prize", aby natychmiast przetestować połączenie z bazą danych.

Następnie oczyszcza strukturę projektu, tworząc dwa foldery:

  • Modele

  • Dostęp do danych

Zauważa, że to nie wpływa na funkcjonalność kodu źródłowego, ale pomaga w organizacji. Kiedy wracasz do projektu później, czysta struktura i spójne nazewnictwo ułatwiają znacznie utrzymanie i rozszerzanie.

Dlaczego Dapper?

Tim wyjaśnia, że użyje Dapper jako ORM (Maper relacyjno-obiektowy) dla połączeń SQL. Dapper znajduje się między surowymi poleceniami SQL a wyższych poziomów ORM takich jak Entity Framework.

Tim preferuje Dapper, ponieważ jest:

  • Prawie tak szybki jak surowe ADO.NET

  • Prostszym niż Entity Framework

  • Unika zbędnej złożoności i ciężkiego kodu szablonowego

Wspomina, że Entity Framework może być wolniejszy i cięższy, szczególnie dla małych aplikacji. Do swojego projektu Dapper dostarcza odpowiedniego balansu pomiędzy wydajnością i prostotą.

Instalacja Dapper

Tim demonstruje instalację Dapper przez Menedżera Pakietów NuGet w Visual Studio. Po instalacji Dapper pojawia się w referencjach projektu, a kod połączenia SQL staje się czysty i czytelny.

Dodawanie ciągu połączenia

Aby używać Dapper, potrzebujesz ciągu połączenia. Tim dodaje go do pliku app.config projektu UI, a nie projektu biblioteki, ponieważ biblioteka jest DLL i nie ma własnej konfiguracji.

Ciąg połączenia obejmuje:

  • Data Source (nazwa serwera lub domena maszyny)

  • Initial Catalog (nazwa bazy danych)

  • Integrated Security (uwierzytelnianie Windows)

  • Limit czasu połączenia

  • User ID i Password (jeśli nie używasz uwierzytelniania Windows)

W przykładzie Tima używa on zaufanego połączenia, co oznacza uwierzytelnianie Windows:

Data Source=SQL2016;Initial Catalog=Tournaments;Integrated Security=True;
Text

Podkreśla, że unika to przechowywania danych logowania użytkownika SQL Server w pliku.

GlobalConfig: Pobieranie ciągu połączenia

Aby pobrać ciąg połączenia, Tim dodaje metodę w GlobalConfig:

public static string GetConnectionString(string name)
{
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
Text

Ta metoda pobiera ciąg połączenia z pliku konfiguracyjnego i zwraca go. Tim dodaje również wymaganą referencję System.Configuration.

Tworzenie połączenia SQL

Tim usuwa kawałek kodu zastępczego i tworzy rzeczywiste SqlConnection używając:

using (IDbConnection connection = new SqlConnection(
GlobalConfig.GetConnectionString("tournaments")))
{
// SQL logic here
}
Text

Używa interfejsu IDbConnection, aby móc zamieniać typy baz danych (SQL lub plik tekstowy) bez zmiany samego kodu.

Blok using jest ważny, ponieważ zapewnia automatyczne zamknięcie połączenia po wyjściu z bloku. Unika to otwartych połączeń, które mogą wyczerpać pulę połączeń lub powodować błędy na serwerze bazy danych.

Tworzenie procedury składowanej

Zamiast pisać surowy SQL wewnątrz C#, Tim używa procedury składowanej. Utrzymuje to logikę SQL w bazie danych i redukuje ryzyka takie jak zastrzyki SQL.

Tworzy on procedurę składowaną o nazwie:

dbo.SP_Prizes_Insert
Text

Ta procedura przyjmuje parametry pasujące do tabeli z nagrodami:

  • @PlaceNumber

  • @PlaceName

  • @PrizeAmount

  • @PrizePercentage

  • @ID (output)

Parametr output zwraca nowo wygenerowany ID używając:

SELECT @ID = SCOPE_IDENTITY()
Text

Zapewnia to zwrócenie ID nowego rekordu do aplikacji C#.

Dynamiczne parametry w Dapper

Z powrotem w C#, Tim używa DynamicParameters Dappera do przesyłania parametrów do procedury składowanej:

var p = new DynamicParameters();
p.Add("@PlaceNumber", model.PlaceNumber);
p.Add("@PlaceName", model.PlaceName);
p.Add("@PrizeAmount", model.PrizeAmount);
p.Add("@PrizePercentage", model.PrizePercentage);
p.Add("@ID", 0, dbType: DbType.Int32, direction: ParameterDirection.Output);
Text

ID jest oznaczony jako Output, a Dapper obsługuje mapowanie parametrów.

Wykonywanie procedury składowanej

Wykonuje procedurę składowaną:

connection.Execute("dbo.SP_Prizes_Insert", p, commandType: CommandType.StoredProcedure);
Text

Execute jest używany, ponieważ wykonuje insert i nie zwraca wierszy jak instrukcja SELECT.

Po wykonaniu kod pobiera ID:

model.ID = p.Get<int>("@ID");
return model;
Text

Testowanie i wyniki

Tim uruchamia aplikację, wypełnia formularz i klika Utwórz Nagrodę. Dane są pomyślnie wstawiane do bazy danych SQL Server. Testuje zarówno:

  • Kwota nagrody

  • Procent nagrody

Obydwa działają, co potwierdza, że połączenie z bazą danych i procedura składowana działają poprawnie.

Wyzwanie projektowe: Wiele złączy danych (1:01:50)

Tim zwraca uwagę na problem z projektem: używanie jednocześnie złączy SQL i pliku tekstowego powoduje niespójne ID.

Dlatego zmienia projekt, aby w danym czasie działało tylko jedno złącze. Dodaje wyliczenie:

TypBazyDanych
{
SQL,
TextFile
}
Text

Zapewnia to, że aplikacja zawsze używa spójnego typu bazy danych i zapobiega mieszaniu danych z różnych źródeł.

Wnioski

Lekcja 10 Tima Corey'a pokazuje podejście rzeczywiste do łączenia aplikacji C# z SQL Server używając Dapper. Porusza tematy:

  • Dodawanie ciągu połączenia

  • Korzystanie z SqlConnection

  • Bezpieczne otwieranie i zamykanie połączeń

  • Korzystanie z procedur składowanych

  • Unikanie zastrzyków SQL

  • Właściwa architektura dla wielu źródeł danych

Jeśli chcesz czystego, szybkiego i łatwego do konserwacji sposobu łączenia C# z bazą danych SQL Server, ta lekcja jest doskonałym przewodnikiem.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta