Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 6572|Odgovoriti: 4

[.NET Core] [Dejanski boj]. NET/C# SQL generator poizvedb na osnovi sqlkata

[Kopiraj povezavo]
Objavljeno 2022-10-12 22:07:53 | | | |
Zahteve: Prebral sem članek o sqlkata na internetu, "SqlKata - priročen in enostaven za uporabo SQL Query Builder", in menim, da je ta vtičnik zelo uporaben; lahko dinamično nastavite imena in pogoje tabel za generiranje ustreznih varnih SQL stavkov, front-end pa kliče sqlkata za izvajanje operacij baze podatkov prek vizualnih konfiguracijskih informacij, poleg tega pa lahko konfigurirate vmesnik brez programiranja in trdega kodiranja. To je podobno moji prejšnji uporabi jOOQ v Java razvojnih projektih.

SqlKata

SqlKata Query Generator je zmogljiv generator SQL poizvedb, napisan v C#. Je varen in neodvisen od okvirja. Navdihnjeno z najboljšimi graditelji poizvedb, kot sta Laravel Query Builder in Knex.

Zmogljiv dinamični generator SQL poizvedb, ki podpira Sql Server, MySql, PostgreSql, Oracle in Firebird.

GitHub naslov:Prijava do hiperpovezave je vidna.
Uradni naslov dokumenta:Prijava do hiperpovezave je vidna.

SQL Server pripravi testne podatke

Najprej uporabimo bazo podatkov MSSQL za ustvarjanje nove testne tabele in generiranje nekaterih testnih podatkov, skripta je naslednja:



Ustvarite novo konzolno aplikacijo .NET Core 3.1

Dodajte pakete SqlKata in SqlKata.Execution, Microsoft.Data.SqlClient z uporabo Nugeta z naslednjim ukazom:


Koda konzole je naslednja:

exec sp_executesql N'SELECT * FROM [TestTableSize] KJER [MyKeyField] = @p0 VRSTNI RED Z (IZBERI 0) ODMIK @p1 VRSTIC PRIDOBI NEXT @p2 VRSTICE SAMO',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Poskusi poslati poizvedboTabela, ki ne obstaja, napaka je naslednja:

Neobdelana izjema. Microsoft.Data.SqlClient.SqlException (0x80131904): Neveljavno ime objekta 'Hei'.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, 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)
   at Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   at 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)
   na Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   na Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior vedenje)
   na Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behaviour)
   na System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior vedenje)
   na Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behaviour) v /_/Dapper/SqlMapper.cs:line 1066
   at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, ukaz CommandDefinition, Type effectiveType)+MoveNext() v /_/Dapper/SqlMapper.cs:line 1094
   at System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable'1 source)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) v /_/ Dapper/SqlMapper.cs:linija 734
   at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKataDemo.Program.Main(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Številka napake:208,Stanje:1,Razred:16


Če želimo samo generirati SQL stavke preko SqlKata in jih ne želimo izvajati, je koda naslednja:



Bolj napredne poizvedbe

JOIN tabela


Vstavi podatke


Podatki posodobitve


Izbriši podatke

(Konec)





Prejšnji:Oznake pomnilniških modulov Hynix (Hynix) in Micron (Micron) so podrobno pojasnjene
Naslednji:ESXI 7 preverja model pomnilnika in velikost strežniškega gostitelja
Objavljeno 13. 10. 2022 ob 15:19:47 |
Učiti se učiti, dobro
Objavljeno 14. 10. 2022 ob 11:07:18 |
Uči se učiti
 Najemodajalec| Objavljeno 2025-1-2 12:15:02 |
LINQKit je brezplačen nabor razširitev za napredne uporabnike LINQ na SQL in Entity Framework. :Prijava do hiperpovezave je vidna.
 Najemodajalec| Objavljeno 2025-1-2 ob 14:20:57 |
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com