Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 6572|Antwoord: 4

[.NET Core] [Echte gevechten]. NET/C# SQL-querygenerator gebaseerd op sqlkata

[Link kopiëren]
Geplaatst op 2022-10-12 22:07:53 | | | |
Eisen: Ik las een artikel over sqlkata op het internet, "SqlKata - Convenient and Easy to Use Sql Query Builder", en ik vind deze plugin erg nuttig, je kunt dynamisch tabelnamen en voorwaarden instellen om bijbehorende veilige SQL-statements te genereren, en de front-end roept sqlkata aan om databasebewerkingen uit te voeren via visuele formulierconfiguratie-informatie, en je kunt een interface configureren zonder te programmeren en hardcoderen. Dit lijkt op mijn eerdere gebruik van jOOQ in Java-ontwikkelingsprojecten.

SqlKata

SqlKata Query Generator is een krachtige SQL-querygenerator geschreven in C#. Het is veilig en frame-agnostisch. Geïnspireerd door de beste query builders die beschikbaar zijn, zoals Laravel Query Builder en Knex.

Een krachtige dynamische SQL-querygenerator die Sql Server, MySql, PostgreSQL, Oracle en Firebird ondersteunt.

GitHub-adres:De hyperlink-login is zichtbaar.
Officieel documentadres:De hyperlink-login is zichtbaar.

SQL Server bereidt de testgegevens voor

Eerst gebruiken we de MSSQL-database om een nieuwe testtabel te maken en wat testgegevens te genereren; het script is als volgt:



Maak een nieuwe .NET Core 3.1 console-app aan

Voeg de SqlKata- en SqlKata.Execution-pakketten toe met behulp van Nuget en gebruik van Nuget met het volgende commando:


De consolecode is als volgt:

exec sp_executesql N'SELECT * UIT [TestTableSize] WAAR [MyKeyField] = @p0 VOLGORDE DOOR (SELECT 0) OFFSET @p1 RIJEN OPHALEN @p2 RIJEN ALLEEN',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Probeer er een te queryenEen tabel die niet bestaat, de fout is als volgt:

Onbehandelde uitzondering. Microsoft.Data.SqlClient.SqlException (0x80131904): Ongeldige objectnaam 'Hei'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException-uitzondering, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   op Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   op Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   op Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   bij 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&useCache, Boolean asyncWrite, Boolean inRetry, String method)
   op Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String-methode)
   op Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   bij Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   op System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
   op Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) in /_/Dapper/SqlMapper.cs:line 1066
   op Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition-commando, Type effectiveType)+MoveNext() in /_/Dapper/SqlMapper.cs:line 1094
   op System.Collections.Generic.List'1..ctor(IEnumerable'1 collectie)
   op System.Linq.Enumerable.ToList[TSource](IEnumerable'1 bron)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) in /_/ Dapper/SqlMapper.cs:lijn 734
   at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction-transactie, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get[T](Queryquery, IDbTransaction-transactie, Nullable'1 timeout)
   bij SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction-transactie, Nullable'1 timeout)
   op SqlKataDemo.Program.Main(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:regel 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Foutnummer: 208, Staat:1, Klas: 16


Als we alleen SQL-statements via SqlKata willen genereren en ze niet willen uitvoeren, is de code als volgt:



Meer geavanceerde queries

JOIN-tabel


Gegevens invoegen


Updategegevens


Verwijder gegevens

(Einde)





Vorig:Hynix (Hynix) en Micron (Micron) geheugenmodule labels worden uitvoerig uitgelegd
Volgend:ESXI 7 controleert het geheugenmodel en de grootte van de serverhost
Geplaatst op 13-10-2022 15:19:47 |
Leren leren, goed dat
Geplaatst op 14-10-2022 11:07:18 |
Leer leren
 Huisbaas| Geplaatst op 2 januari 2025 12:15:02 |
LINQKit is een gratis suite van extensies voor LINQ voor gevorderde gebruikers van SQL en Entity Framework. :De hyperlink-login is zichtbaar.
 Huisbaas| Geplaatst op 2-1-2025 14:20:57 |
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com