Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 6572|Odpowiedź: 4

[.NET Core] [Rzeczywista walka]. Generator zapytań SQL NET/C# oparty na sqlkata

[Skopiuj link]
Opublikowano 2022-10-12 22:07:53 | | | |
Wymagania: Przeczytałem artykuł o sqlkata w Internecie "SqlKata - Convenient and Easy to Use Sql Query Builder" i uważam, że ta wtyczka jest bardzo przydatna – można dynamicznie ustawiać nazwy i warunki tabel do generowania odpowiadających bezpiecznych instrukcji SQL, a front-end wywołuje sqlkata do wykonywania operacji bazadanych za pomocą wizualnych informacji konfiguracyjnych, a interfejs można skonfigurować bez programowania i hardkodowania. To podobne do mojego wcześniejszego użycia jOOQ w projektach programistycznych Javy.

SqlKata

SqlKata Query Generator to potężny generator zapytań SQL napisany w C#. Jest bezpieczny i niezależny od ramy. Zainspirowane najlepszymi kreatorami zapytań, takimi jak Laravel Query Builder i Knex.

Potężny, dynamiczny generator zapytań SQL wspierający Sql Server, MySql, PostgreSql, Oracle oraz Firebird.

Adres GitHub:Logowanie do linku jest widoczne.
Oficjalny adres dokumentu:Logowanie do linku jest widoczne.

SQL Server przygotowuje dane testowe

Najpierw używamy bazy danych MSSQL do utworzenia nowej tabeli testowej i wygenerowania danych testowych, skrypt wygląda następująco:



Stwórz nową aplikację konsolową .NET Core 3.1

Dodaj pakiety SqlKata i SqlKata.Execution, Microsoft.Data.SqlClient za pomocą Nugeta za pomocą następującego polecenia:


Kod konsoli jest następujący:

exec sp_executesql N'SELECT * FROM [TestTableSize] GDZIE [MyKeyField] = @p0 KOLEJNOŚĆ PRZEZ (WYBIERZ 0) OFFSET @p1 WIERSZE POBIERAJĄ NASTĘPNE @p2 WIERSZY TYLKO ',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Spróbuj wysłać zapytanieTabela, która nie istnieje, błąd jest następujący:

Wyjątek nieobsługiwany. Microsoft.Data.SqlClient.SqlException (0x80131904): Nieprawidłowa nazwa obiektu 'Hei'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError (SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, boolean shouldCacheForAlwaysEncrypted)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String method)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   na stronie Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behaviour)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behaviour)
   at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behaviour) w /_/Dapper/SqlMapper.cs:line 1066
   at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, polecenie CommandDefinition, Type effectiveType)+MoveNext() w /_/Dapper/SqlMapper.cs:line 1094
   at System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable'1 source)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) w /_/ Dapper/SqlMapper.cs:linia 734
   at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKataDemo.Program.Main(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Numer błędu: 208,Stan:1,Klasa:16


Jeśli chcemy tylko generować instrukcje sql przez SqlKata i nie chcemy ich wykonywać, kod wygląda następująco:



Bardziej zaawansowane zapytania

Tabela JOIN


Wstaw dane


Aktualizacja danych


Usuń dane

(Koniec)





Poprzedni:Etykiety modułów pamięci Hynix (Hynix) i Micron (Micron) są szczegółowo wyjaśnione
Następny:ESXI 7 sprawdza model pamięci oraz rozmiar hosta serwera
Opublikowano 2022-10-13 15:19:47 |
Nauka uczenia się, dobra rzecz
Opublikowano 2022-10-14 11:07:18 |
Naucz się uczyć
 Ziemianin| Opublikowano 2025-1-2 12:15:02 |
LINQKit to darmowy pakiet rozszerzeń dla zaawansowanych użytkowników LINQ do SQL i Entity Framework. :Logowanie do linku jest widoczne.
 Ziemianin| Opublikowano 2025-1-2 14:20:57 |
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com