Krav: Jag läste en artikel om sqlkata på internet, "SqlKata - Convenient and Easy to Use SQL Query Builder", och jag tycker att detta plugin är mycket användbart, du kan dynamiskt ställa in tabellnamn och villkor för att generera motsvarande säkra SQL-satser, och front-end anropar sqlkata för att utföra databasoperationer via visuell formulärkonfigurationsinformation, och du kan konfigurera ett gränssnitt utan programmering och hårdkodning. Detta liknar min tidigare användning av jOOQ i Java-utvecklingsprojekt.
SqlKata
SqlKata Query Generator är en kraftfull SQL-frågegenerator skriven i C#. Den är säker och ram-agnostisk. Inspirerad av de bästa frågebyggarna som finns, som Laravel Query Builder och Knex.
En kraftfull dynamisk SQL-frågegenerator som stödjer SQL Server, MySql, PostgreSQL, Oracle och Firebird.
GitHub-adress:Inloggningen med hyperlänken är synlig. Officiell dokumentadress:Inloggningen med hyperlänken är synlig.
SQL Server förbereder testdata
Först använder vi MSSQL-databasen för att skapa en ny testtabell och generera viss testdata, skriptet är följande:
Skapa en ny .NET Core 3.1-konsolapp
Lägg till SqlKata och SqlKata.Execution, Microsoft.Data.SqlClient-paketen med Nuget och följande kommando:
Konsolkoden är följande:
exec sp_executesql N'SELECT * FRÅN [TestTableSize] DÄR [MyKeyField] = @p0 ORDNING EFTER (SELECT 0) OFFSET @p1 RADER HÄMTA NÄSTA @p2 RADER ONLY,n'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10
Försök att skicka en förfrågningEn tabell som inte existerar, felet är följande:
Undantag för ohanterad användning. Microsoft.Data.SqlClient.SqlException (0x80131904): Ogiltigt objektnamn 'Hei'. på Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException-undantag, Boolean breakConnection, Action'1 wrapCloseInAction) på Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException-undantag, Boolean breakConnection, Action'1 wrapCloseInAction) at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) på Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) på Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData() vid Microsoft.Data.SqlClient.SqlDataReader.get_MetaData() på Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) på 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) på Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource'1 completion, Int32 timeout, Task&task, Boolean&useCache, Boolean asyncWrite, Boolean inRetry, String method) på Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String-metoden) på Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) på Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior beteende) på System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) på Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) i /_/Dapper/SqlMapper.cs:line 1066 på Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition-kommando, Type effectiveType)+MoveNext() i /_/Dapper/SqlMapper.cs:line 1094 på System.Collections.Generic.List'1..ctor(IEnumerable'1 collection) på System.Linq.Enumerable.ToList[TSource](IEnumerable'1 källa) på Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) i /_/ Dapper/SqlMapper.cs:linje 734 at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction-transaktion, Nullable'1 timeout) at SqlKata.Execution.QueryExtensions.Get[T](Query query, IDbTransaction-transaktion, Nullable'1 timeout) på SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction-transaktion, Nullable'1 timeout) på SqlKataDemo.Program.Main(String[] args) i C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:rad 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da Felnummer:208,Stat:1,Klass:16
Om vi bara vill generera SQL-satser via SqlKata och inte vill köra dem, är koden följande:
Mer avancerade frågor
JOIN-tabell
Infoga data
Uppdateringsdata
Radera data
(Slut)
|