Zahteve: Prebral sem članek o sqlkata na internetu, "SqlKata - priročen in enostaven za uporabo SQL Query Builder", in menim, da je ta vtičnik zelo uporaben; lahko dinamično nastavite imena in pogoje tabel za generiranje ustreznih varnih SQL stavkov, front-end pa kliče sqlkata za izvajanje operacij baze podatkov prek vizualnih konfiguracijskih informacij, poleg tega pa lahko konfigurirate vmesnik brez programiranja in trdega kodiranja. To je podobno moji prejšnji uporabi jOOQ v Java razvojnih projektih.
SqlKata
SqlKata Query Generator je zmogljiv generator SQL poizvedb, napisan v C#. Je varen in neodvisen od okvirja. Navdihnjeno z najboljšimi graditelji poizvedb, kot sta Laravel Query Builder in Knex.
Zmogljiv dinamični generator SQL poizvedb, ki podpira Sql Server, MySql, PostgreSql, Oracle in Firebird.
GitHub naslov:Prijava do hiperpovezave je vidna. Uradni naslov dokumenta:Prijava do hiperpovezave je vidna.
SQL Server pripravi testne podatke
Najprej uporabimo bazo podatkov MSSQL za ustvarjanje nove testne tabele in generiranje nekaterih testnih podatkov, skripta je naslednja:
Ustvarite novo konzolno aplikacijo .NET Core 3.1
Dodajte pakete SqlKata in SqlKata.Execution, Microsoft.Data.SqlClient z uporabo Nugeta z naslednjim ukazom:
Koda konzole je naslednja:
exec sp_executesql N'SELECT * FROM [TestTableSize] KJER [MyKeyField] = @p0 VRSTNI RED Z (IZBERI 0) ODMIK @p1 VRSTIC PRIDOBI NEXT @p2 VRSTICE SAMO',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10
Poskusi poslati poizvedboTabela, ki ne obstaja, napaka je naslednja:
Neobdelana izjema. Microsoft.Data.SqlClient.SqlException (0x80131904): Neveljavno ime objekta '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) na Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) na Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior vedenje) na Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behaviour) na System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior vedenje) na Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behaviour) v /_/Dapper/SqlMapper.cs:line 1066 at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, ukaz CommandDefinition, Type effectiveType)+MoveNext() v /_/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) v /_/ Dapper/SqlMapper.cs:linija 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 Številka napake:208,Stanje:1,Razred:16
Če želimo samo generirati SQL stavke preko SqlKata in jih ne želimo izvajati, je koda naslednja:
Bolj napredne poizvedbe
JOIN tabela
Vstavi podatke
Podatki posodobitve
Izbriši podatke
(Konec)
|