Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 6572|Svar: 4

[.NET Core] [Verklig strid]. NET/C# SQL-frågegenerator baserad på sqlkata

[Kopiera länk]
Publicerad den 2022-10-12 22:07:53 | | | |
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)





Föregående:Hynix (Hynix) och Micron (Micron) minnesmoduletiketter förklaras i detalj
Nästa:ESXI 7 kontrollerar minnesmodellen och storleken på servervärden
Publicerad den 2022-10-13 15:19:47 |
Att lära sig att lära sig, bra sak
Publicerad den 2022-10-14 11:07:18 |
Lär dig att lära dig
 Hyresvärd| Publicerad den 2025-1-2 12:15:02 |
LINQKit är en kostnadsfri svit av tillägg för LINQ till avancerade användare av SQL och Entity Framework. :Inloggningen med hyperlänken är synlig.
 Hyresvärd| Publicerad den 2025-1-2 14:20:57 |
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com