Krav: Jeg læste en artikel om sqlkata på internettet, "SqlKata - Convenient and Easy to Use Sql Query Builder", og jeg synes, at dette plugin er meget nyttigt, du kan dynamisk sætte tabelnavne og betingelser for at generere tilsvarende sikre SQL-sætninger, og front-end kalder sqlkata for at udføre databaseoperationer via visuel formularkonfiguration, og du kan konfigurere et interface uden programmering og hardcode. Dette ligner min tidligere brug af jOOQ i Java-udviklingsprojekter.
SqlKata
SqlKata Query Generator er en kraftfuld SQL-forespørgselsgenerator skrevet i C#. Den er sikker og ramme-agnostisk. Inspireret af de bedste forespørgselsbyggere på markedet, såsom Laravel Query Builder og Knex.
En kraftfuld dynamisk SQL-forespørgselsgenerator, der understøtter SQL Server, MySql, PostgreSql, Oracle og Firebird.
GitHub-adresse:Hyperlink-login er synlig. Officiel dokumentadresse:Hyperlink-login er synlig.
SQL Server forbereder testdataene
Først bruger vi MSSQL-databasen til at oprette en ny testtabel og generere nogle testdata, scriptet er som følger:
Opret en ny .NET Core 3.1 konsolapp
Tilføj SqlKata og SqlKata.Execution, Microsoft.Data.SqlClient-pakkerne med Nuget med følgende kommando:
Konsolkoden er som følger:
exec sp_executesql N'SELECT * FRA [TestTableSize] HVOR [MyKeyField] = @p0 ORDEN EFTER (SELECT 0) OFFSET @p1 RÆKKER HENTER NÆSTE @p2 KUN RÆKKER',n'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10
Prøv at sende en forespørgselEn tabel, der ikke eksisterer, fejlen er som følger:
Ubehandlet undtagelse. Microsoft.Data.SqlClient.SqlException (0x80131904): Ugyldigt objektnavn 'Hei'. at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction) at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException undtagelse, 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) på Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData() ved 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&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 behavior) 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 kilde) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) i /_/ Elegant/SqlMapper.cs: linje 734 at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction-transaktion, Nullable'1 timeout) at SqlKata.Execution.QueryExtensions.Get[T](Forespørgsel, IDbTransaction-transaktion, Nullable'1 timeout) at 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:linje 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da Fejlnummer: 208, Stat:1, Klasse: 16
Hvis vi bare vil generere SQL-sætninger gennem SqlKata og ikke vil eksekvere dem, er koden som følger:
Mere avancerede forespørgsler
JOIN-tabel
Indsæt data
Opdateringsdata
Slet data
(Slut)
|