Krav: Jeg leste en artikkel om sqlkata på Internett, «SqlKata – Convenient and Easy to Use Sql Query Builder», og jeg synes dette pluginet er veldig nyttig, du kan dynamisk sette tabellnavn og betingelser for å generere tilsvarende sikre SQL-setninger, og front-end kaller sqlkata for å utføre databaseoperasjoner gjennom visuell formkonfigurasjonsinformasjon, og du kan konfigurere et grensesnitt uten programmering og hardkoding. Dette ligner på min tidligere bruk av jOOQ i Java-utviklingsprosjekter.
SqlKata
SqlKata Query Generator er en kraftig SQL-spørringsgenerator skrevet i C#. Den er sikker og ramme-agnostisk. Inspirert av de beste spørringsbyggerne som finnes, som Laravel Query Builder og Knex.
En kraftig dynamisk SQL-spørringsgenerator som støtter SQL Server, MySql, PostgreSql, Oracle og Firebird.
GitHub-adresse:Innloggingen med hyperkoblingen er synlig. Offisiell dokumentadresse:Innloggingen med hyperkoblingen er synlig.
SQL Server forbereder testdataene
Først bruker vi MSSQL-databasen til å lage en ny testtabell og generere noen testdata, skriptet er som følger:
Lag en ny .NET Core 3.1-konsollapp
Legg til SqlKata og SqlKata.Execution, Microsoft.Data.SqlClient-pakkene ved bruk av Nuget med følgende kommando:
Konsollkoden er som følger:
exec sp_executesql N'SELECT * FRA [TestTableSize] HVOR [MyKeyField] = @p0 ORDEN ETTER (SELECT 0) OFFSET @p1 RADER HENT NESTE @p2 KUN RADER,n'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10
Prøv å sende en forespørselEn tabell som ikke eksisterer, feilen er som følger:
Unntak for ubehandlet. Microsoft.Data.SqlClient.SqlException (0x80131904): Ugyldig objektnavn 'Hei'. på Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException-unntak, boolsk breakConnection, Action'1 wrapCloseInAction) på Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException-unntak, boolsk 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() 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&usedCache, 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:linje 1066 på Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition-kommando, Type effectiveType)+MoveNext() i /_/Dapper/SqlMapper.cs:linje 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-transaksjon, boolsk bufret, Nullable'1 commandTimeout, Nullable'1 commandType) i /_/ Dapper/SqlMapper.cs:linje 734 at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction-transaksjon, Nullable'1 timeout) at SqlKata.Execution.QueryExtensions.Get[T](Query query, IDbTransaction-transaksjon, Nullable'1 timeout) at SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction-transaksjon, Nullable'1 timeout) på SqlKataDemo.Program.Main(String[] args) i C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da Feilnummer: 208, Stat: 1, Klasse: 16
Hvis vi bare vil generere SQL-setninger gjennom SqlKata og ikke vil kjøre dem, er koden som følger:
Mer avanserte spørringer
JOIN-tabell
Sett inn data
Oppdateringsdata
Slett data
(Slutt)
|