Exigences : J’ai lu un article sur SQL sur Internet, « SqlKata - SqlKata - Sql Query Builder pratique et facile à utiliser », et je trouve que ce plugin est très utile, on peut définir dynamiquement les noms et conditions des tables pour générer des instructions SQL sécurisées correspondantes, et le front-end appelle sqlkata pour effectuer des opérations de base de données via des informations de configuration visuelles de formulaires, et on peut configurer une interface sans programmer ni coder en dur. C’est similaire à mon utilisation précédente de jOOQ dans les projets de développement Java.
SqlKata
Le générateur de requêtes SQL est un puissant générateur de requêtes SQL écrit en C#. Il est sécurisé et indépendant du cadre. Inspiré par les meilleurs constructeurs de requêtes disponibles, tels que Laravel Query Builder et Knex.
Un puissant générateur de requêtes SQL dynamique qui prend en charge Sql Server, MySql, PostgreSql, Oracle et Firebird.
Adresse GitHub :La connexion hyperlientérée est visible. Adresse officielle du document :La connexion hyperlientérée est visible.
SQL Server prépare les données de test
Tout d’abord, nous utilisons la base de données MSSQL pour créer une nouvelle table de test et générer des données de test, le script est le suivant :
Créer une nouvelle application console .NET Core 3.1
Ajoutez les packages SqlKata et SqlKata.Execution, Microsoft.Data.SqlClient en utilisant Nuget avec la commande suivante :
Le code console est le suivant :
exec sp_executesql N’SELECT * FROM [TestTableSize] OÙ [MyKeyField] = @p0 ORDRE PAR (SELECT 0) DÉCALAGE @p1 LIGNES RÉCUPÉRER LES LIGNES SUIVANTES @p2'@p0 NVARCHAR(4000),@p1 bigint,@p2 int',@p0= N'0000000088', @p1=0,@p2=10
Essayez d’en interroger unUn tableau qui n’existe pas, l’erreur est la suivante :
Exception non traitée. Microsoft.Data.SqlClient.SqlException (0x80131904) : Nom d’objet invalide '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() à 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, timeout Int32, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) à Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, TaskCompletionSource'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, méthode String) at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, méthode String) at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(comportement de commande) at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(comportement CommandBehavior) at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehaviour behavior) sur Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, comportement CommandBehavior) dans /_/Dapper/SqlMapper.cs :line 1066 à Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, commande CommandDefinition, Type effectiveType)+MoveNext() dans /_/Dapper/SqlMapper.cs :line 1094 sur System.Collections.Generic.List'1..ctor(IEnumerable'1 collection) sur System.Linq.Enumerable.ToList[TSource](IEnumerable'1 source) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, param Object, transaction IDbTransaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) dans /_/ Dapper/SqlMapper.cs : ligne 734 at SqlKata.Execution.QueryFactory.Get[T](requête de requête, transaction IDbTransaction, délai d’expiration Nullable'1) at SqlKata.Execution.QueryExtensions.Get[T](requête de requête, transaction IDbTransaction, délai d’expiration Nullable'1) at SqlKata.Execution.QueryExtensions.Get(requête requête, transaction IDbTransaction, délai d’expiration Nullable'1) sur SqlKataDemo.Program.Main(String[] args) dans C :\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs :ligne 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da Numéro d’erreur : 208, État : 1, Classe : 16
Si nous voulons simplement générer des instructions sql via SqlKata et ne pas les exécuter, le code est le suivant :
Requêtes plus avancées
Table JOIN
Insérer les données
Mise à jour des données
Supprimer les données
(Fin)
|