Cerințe: Am citit un articol despre sqlkata pe Internet, "SqlKata - Convenience and Easy to Use SQL Query Builder", și consider că acest plugin este foarte util, poți seta dinamic denumirile și condițiile tabelelor pentru a genera instrucțiuni SQL securizate corespunzătoare, iar front-end-ul apelează sqlkata pentru a efectua operațiuni de bază de date prin informații vizuale de configurare a formularelor, și poți configura o interfață fără programare sau hardcodare. Acest lucru este similar cu utilizarea mea anterioară a jOOQ în proiectele de dezvoltare Java.
SqlKata
Generatorul de interogări SqlKata este un generator puternic de interogări SQL scris în C#. Este sigură și independentă de cadru. Inspirat de cele mai bune constructoare de interogări disponibile, precum Laravel Query Builder și Knex.
Un generator dinamic puternic de interogări SQL care suportă Sql Server, MySql, PostgreSql, Oracle și Firebird.
Adresă GitHub:Autentificarea cu hyperlink este vizibilă. Adresa documentului oficial:Autentificarea cu hyperlink este vizibilă.
SQL Server pregătește datele de testare
În primul rând, folosim baza de date MSSQL pentru a crea un nou tabel de testare și a genera unele date de test, scriptul fiind următorul:
Creează o nouă aplicație de consolă .NET Core 3.1
Adaugă pachetele SqlKata și SqlKata.Execution, Microsoft.Data.SqlClient folosind Nuget cu următoarea comandă:
Codul consolei este următorul:
EXEC sp_executesql N'SELECT * DE LA [TestTableSize], UNDE [MyKeyField] = @p0 ORDONEAZĂ DUPĂ (SELECT 0) OFFSET @p1 RÂNDURILE PREIAU DOAR @p2 RÂNDURI',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10
Încearcă să trimiți o interogareUn tabel care nu există, eroarea este următoarea:
Excepție nerezolvată. Microsoft.Data.SqlClient.SqlException (0x80131904): Nume de obiect invalid '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) la Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) la Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData() la Microsoft.Data.SqlClient.SqlDataReader.get_MetaData() la Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) la 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) la Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, metoda String) la Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, metoda String) la Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(comportamentul CommandBehavior) la Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) la System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(ComportamentulComandă) la Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) în /_/Dapper/SqlMapper.cs:line 1066 la Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, comanda CommandDefinition, Type effectiveType)+MoveNext() în /_/Dapper/SqlMapper.cs:line 1094 la System.Collections.Generic.List'1..ctor(IEnumerable'1 collection) la System.Linq.Enumerable.ToList[TSource](IEnumerable'1 sursă) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, tranzacție IDbTransaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) în /_/ Dapper/SqlMapper.cs:linia 734 at SqlKata.Execution.QueryFactory.Get[T](Interogare interogare, tranzacție IDbTransaction, timeout Nullable'1) la SqlKata.Execution.QueryExtensions.Get[T](Interogare interogare, tranzacție IDbTransaction, timeout Nullable'1) at SqlKata.Execution.QueryExtensions.Get(Interogare interogare, tranzacție IDbTransaction, timeout Nullable'1) la SqlKataDemo.Program.Main(String[] args) în C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:linia 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da Număr de eroare: 208, Stat: 1, Clasă: 16
Dacă vrem doar să generăm instrucțiuni sql prin SqlKata și nu vrem să le executăm, codul este următorul:
Interogări mai avansate
Tabelul JOIN
Inserarea datelor
Date de actualizare
Șterge datele
(Sfârșit)
|