Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 6572|Odpoveď: 4

[.NET Core] [Skutočný boj]. NET/C# SQL generátor dotazov založený na sqlkata

[Kopírovať odkaz]
Zverejnené 12.10.2022 22:07:53 | | | |
Požiadavky: Čítal som článok o sqlkata na internete, "SqlKata - Convenient and Easy to Use Sql Query Builder" a myslím si, že tento plugin je veľmi užitočný, môžete dynamicky nastavovať názvy a podmienky tabuliek na generovanie zodpovedajúcich bezpečných SQL príkazov a front-end volá sqlkata na vykonávanie databázových operácií cez vizuálne konfiguračné informácie, a môžete nastaviť rozhranie bez programovania a hardcodingu. Je to podobné ako pri mojom predchádzajúcom používaní jOOQ v Java vývojových projektoch.

SqlKata

SqlKata Query Generator je výkonný generátor SQL dotazov napísaný v jazyku C#. Je bezpečný a nezávislý od rámca. Inšpirované najlepšími nástrojmi na tvorbu dotazov, ako sú Laravel Query Builder a Knex.

Výkonný dynamický generátor SQL dotazov, ktorý podporuje Sql Server, MySql, PostgreSql, Oracle a Firebird.

GitHub adresa:Prihlásenie na hypertextový odkaz je viditeľné.
Oficiálna adresa dokumentu:Prihlásenie na hypertextový odkaz je viditeľné.

SQL Server pripravuje testovacie dáta

Najprv použijeme databázu MSSQL na vytvorenie novej testovacej tabuľky a vygenerovanie testovacích dát, skript je nasledovný:



Vytvorte novú konzolovú aplikáciu .NET Core 3.1

Pridajte balíky SqlKata a SqlKata.Execution, Microsoft.Data.SqlClient pomocou Nugetu pomocou nasledujúceho príkazu:


Kód konzoly je nasledovný:

exec sp_executesql N'SELECT * FROM [TestTableSize] KDE [MyKeyField] = @p0 PORADIE PODĽA (VYBRAŤ 0) OFFSET @p1 RIADKY NAČÍTAJ NEXT @p2 RIADKOV LEN ',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Skúste poslať dotaz na jedenTabuľka, ktorá neexistuje, chyba je nasledovná:

Neriešená výnimka. Microsoft.Data.SqlClient.SqlException (0x80131904): Neplatné meno objektu '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 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)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   na Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   na System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(správanie príkazu)
   at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) v /_/Dapper/SqlMapper.cs:line 1066
   at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, príkaz 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:riadok 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
Chybové číslo:208,Štát:1,Trieda:16


Ak chceme len generovať SQL príkazy cez SqlKata a nechceme ich vykonávať, kód je nasledovný:



Pokročilejšie dotazy

JOIN tabuľka


Vložiť dáta


Aktualizácia dát


Vymazať dáta

(Koniec)





Predchádzajúci:Popisky pamäťových modulov Hynix (Hynix) a Micron (Micron) sú podrobne vysvetlené
Budúci:ESXI 7 kontroluje pamäťový model a veľkosť hostiteľa servera
Zverejnené 13. 10. 2022 o 15:19:47 |
Učiť sa učiť, to je dobrá vec
Zverejnené 2022-10-14 11:07:18 |
Naučte sa učiť
 Prenajímateľ| Zverejnené 2025-1-2 12:15:02 |
LINQKit je bezplatná sada rozšírení pre pokročilých používateľov LINQ to SQL a Entity Framework. :Prihlásenie na hypertextový odkaz je viditeľné.
 Prenajímateľ| Zverejnené 2025-1-2 14:20:57 |
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com