Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 6572|Répondre: 4

[.NET Core] [Combat réel]. Générateur de requêtes SQL Net/C# basé sur SQL

[Copié le lien]
Publié le 12-10-2022 à 22:07:53 | | | |
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)





Précédent:Les étiquettes de modules mémoire Hynix (Hynix) et Micron (Micron) sont expliquées en détail
Prochain:ESXI 7 vérifie le modèle mémoire et la taille de l’hôte serveur
Publié le 13-10-2022 à 15:19:47 |
Apprendre à apprendre, c’est une bonne chose
Publié le 14-10-2022 à 11:07:18 |
Apprendre à apprendre
 Propriétaire| Publié le 2025-1-2 à 12:15:02 |
LINQKit est une suite d’extensions gratuite destinée aux utilisateurs avancés de LINQ vers SQL et Entity Framework. :La connexion hyperlientérée est visible.
 Propriétaire| Publié le 2025-1-2 14:20:57 |
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com