Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 6572|Atsakyti: 4

[.NET branduolys] [Tikroji kova]. NET/C# SQL užklausų generatorius, pagrįstas sqlkata

[Kopijuoti nuorodą]
Publikuota: 2022-10-12 22:07:53 | | | |
Reikalavimai: Aš perskaičiau straipsnį apie sqlkata internete, "SqlKata - Patogus ir paprastas naudoti Sql Query Builder", ir manau, kad šis įskiepis yra labai naudingas, galite dinamiškai nustatyti lentelių pavadinimus ir sąlygas generuoti atitinkamus saugius SQL sakinius, ir front-end kviečia sqlkata atlikti duomenų bazės operacijas per vizualinės formos konfigūracijos informaciją, ir jūs galite konfigūruoti sąsają be programavimo ir hardcoding. Tai panašu į mano ankstesnį jOOQ naudojimą Java kūrimo projektuose.

SqlKata

"SqlKata Query Generator" yra galingas "Sql" užklausų generatorius, parašytas C#. Jis yra saugus ir nepriklausomas nuo rėmo. Įkvėpta geriausių galimų užklausų kūrimo priemonių, tokių kaip "Laravel", "Query Builder" ir "Knex".

Galingas dinaminis SQL užklausų generatorius, palaikantis "Sql Server", "MySql", "PostgreSql", "Oracle" ir "Firebird".

"GitHub" adresas:Hipersaito prisijungimas matomas.
Oficialus dokumento adresas:Hipersaito prisijungimas matomas.

SQL serveris paruošia bandymo duomenis

Pirma, mes naudojame MSSQL duomenų bazę, kad sukurtume naują bandymo lentelę ir sugeneruotume kai kuriuos bandymo duomenis, scenarijus yra toks:



Naujos ".NET Core 3.1" konsolės programos kūrimas

Pridėkite "SqlKata" ir "SqlKata.Execution", "Microsoft.Data.SqlClient" paketus naudodami "Nuget" naudodami šią komandą:


Konsolės kodas yra toks:

exec sp_executesql N'SELECT * FROM [TestTableSize] WHERE [MyKeyField] = @p0 ORDER BY (SELECT 0) OFFSET @p1 ROWS FETCH NEXT @p2 ROWS ONLY',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Pabandykite pateikti užklausąLentelė, kurios nėra, klaida yra tokia:

Neapdorota išimtis. Microsoft.Data.SqlClient.SqlException (0x80131904): neleistinas objekto pavadinimas "Hei".
   Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException išimtis, Bulio logikos pertraukaConnection, Action'1 wrapCloseInAction)
   Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException išimtis, Bulio logikos pertraukaConnection, Action'1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Bulio logikos skambintojasHasConnectionLock, Bulio logika asyncClose)
   Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Bulio logika isInternal, Bulio logika forDescribeParameterEncryption, Bulio logikos turėtų CacheForAlwaysEncrypted)
   Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Bulio logikos returnStream, Bulio logikos isAsync, Int32 skirtasis laikas, Task& task, Bulio logika asyncWrite, Bulio logika inRetry, SqlDataReader ds, Bulio logika describeParameterEncryptionRequest)
   Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Bulio logikos returnStream, TaskCompletionSource'1 užbaigimas, Int32 skirtasis laikas, Užduotis ir užduotis, Bulio logika ir naudojama talpykla, Bulio logikos asyncWrite, Bulio logikos inRetry, Eilutės metodas)
   Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Bulio logikos returnStream, eilutės metodas)
   Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior elgesys)
   Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior elgesys)
   System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior elgesys)
   adresu Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Bulio logikos wasClosed, CommandBehavior elgesys) /_/Dapper/SqlMapper.cs:line 1066
   Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition komanda, tipas effectiveType)+MoveNext() /_/Dapper/SqlMapper.cs:line 1094
   System.Collections.Generic.List'1..ctor(IEnumerable'1 rinkinys)
   System.Linq.Enumerable.ToList[TSource](IEnumerable'1 šaltinis)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Bulio logikos buferis, Nullable'1 commandTimeout, Nullable'1 commandType) į /_/ Dapper/SqlMapper.cs:line 734
   at SqlKata.Execution.QueryFactory.Get[T](Užklausos užklausa, IDbTransaction operacija, Nullable'1 skirtasis laikas)
   at SqlKata.Execution.QueryExtensions.Get[T](Užklausos užklausa, IDbTransaction operacija, Nullable'1 skirtasis laikas)
   at SqlKata.Execution.QueryExtensions.Get(Užklausos užklausa, IDbTransaction operacija, Nullable'1 skirtasis laikas)
   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
Klaidos numeris: 208, būsena: 1, klasė: 16


Jei mes tiesiog norime generuoti sql sakinius per SqlKata ir nenorime jų vykdyti, kodas yra toks:



Išplėstinės užklausos

JOIN stalas


Įterpti duomenis


Atnaujinti duomenis


Duomenų naikinimas

(Pabaiga)





Ankstesnis:Išsamiai paaiškinamos Hynix (Hynix) ir Micron (Micron) atminties modulių etiketės
Kitą:ESXI 7 tikrina serverio pagrindinio kompiuterio atminties modelį ir dydį
Publikuota: 2022-10-13 15:19:47 |
Mokytis mokytis, geras dalykas
Publikuota: 2022-10-14 11:07:18 |
Išmokite mokytis
 Savininkas| Publikuota: 2025-1-2 12:15:02 |
LINQKit yra nemokamas plėtinių rinkinys, skirtas LINQ į SQL ir Entity Framework pažengusiems vartotojams. :Hipersaito prisijungimas matomas.
 Savininkas| Publikuota: 2025-1-2 14:20:57 |
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com