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)
|