Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 6572|Svare: 4

[.NET Core] [Faktisk kamp]. NET/C# SQL-spørringsgenerator basert på sqlkata

[Kopier lenke]
Publisert 2022-10-12 22:07:53 | | | |
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)





Foregående:Hynix (Hynix) og Micron (Micron) minnemoduletiketter forklares i detalj
Neste:ESXI 7 sjekker minnemodellen og størrelsen på serververten
Publisert 2022-10-13 15:19:47 |
Å lære å lære, bra ting
Publisert 2022-10-14 11:07:18 |
Lær å lære
 Vert| Publisert 2025-1-2 12:15:02 |
LINQKit er en gratis pakke med utvidelser for avanserte brukere av LINQ til SQL og Entity Framework. :Innloggingen med hyperkoblingen er synlig.
 Vert| Publisert 2.1.2025 14:20:57 |
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com