Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 6572|Respuesta: 4

[.NET Core] [Combate real]. Generador de consultas NET/C# SQL basado en SQL

[Copiar enlace]
Publicado el 12-10-2022 22:07:53 | | | |
Requisitos: Leí un artículo sobre sqlkata en Internet, "SqlKata - Conveniente y fácil de usar Sql Query Builder", y creo que este plugin es muy útil, puedes establecer dinámicamente nombres y condiciones de tablas para generar sentencias SQL seguras correspondientes, y la interfaz llama a sqlkata para realizar operaciones de base de datos mediante información visual de configuración de formularios, y puedes configurar una interfaz sin necesidad de programación ni codificación fija. Esto es similar a mi uso anterior de jOOQ en proyectos de desarrollo Java.

SqlKata

SqlKata Query Generator es un potente generador de consultas SQL escrito en C#. Es seguro y independiente del marco. Inspirado en los principales constructores de consultas disponibles, como Laravel Query Builder y Knex.

Un potente generador dinámico de consultas SQL que soporta Sql Server, MySql, PostgreSql, Oracle y Firebird.

Dirección de GitHub:El inicio de sesión del hipervínculo es visible.
Dirección oficial del documento:El inicio de sesión del hipervínculo es visible.

SQL Server prepara los datos de prueba

Primero, usamos la base de datos MSSQL para crear una nueva tabla de pruebas y generar algunos datos de prueba, el script es el siguiente:



Crea una nueva aplicación de consola .NET Core 3.1

Añade los paquetes SqlKata y SqlKata.Execution, Microsoft.Data.SqlClient usando Nuget con el siguiente comando:


El código de la consola es el siguiente:

EXEC sp_executesql N'SELECT * FROM [TestTableSize] DONDE [MiCampoClave] = @p0 ORDEN POR (SELECT 0) DESPLAZAMIENTO @p1 FILAS OBTIENEN NEXT @p2 SOLO FILAS',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Prueba a enviar una consultaUna tabla que no existe, el error es el siguiente:

Excepción no gestionada. Microsoft.Data.SqlClient.SqlException (0x80131904): Nombre de objeto inválido '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)
   en Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior, runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   en Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   en Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, boolean shouldCacheForAlwaysEncrypted)
   en 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)
   en 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étodo String)
   en Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, método String)
   en Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(comportamiento de CommandBehavior)
   en Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(comportamiento de comando)
   en System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(comportamiento de comandos)
   en Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) en /_/Dapper/SqlMapper.cs:line 1066
   en Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, comando CommandDefinition, Type effectiveType)+MoveNext() en /_/Dapper/SqlMapper.cs:línea 1094
   en System.Collections.Generic.List'1..ctor(IEnumerable'1 collection)
   en System.Linq.Enumerable.ToList[TSource](IEnumerable'1 fuente)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, transacción IDbTransaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) en /_/ Dapper/SqlMapper.cs:línea 734
   at SqlKata.Execution.QueryFactory.Get[T](Consulta de consulta, transacción IDbTransaction, tiempo límite de tiempo de Nullable'1)
   en SqlKata.Execution.QueryExtensions.Get[T](Consulta de consulta, transacción IDbTransaction, tiempo límite de tiempo de Nullable'1)
   at SqlKata.Execution.QueryExtensions.Get(Consulta de consulta, transacción IDbTransaction, tiempo límite de tiempo de Nullable'1)
   en SqlKataDemo.Program.Main(String[] args) en C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:línea 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Número de error: 208, Estado: 1, Clase: 16


Si solo queremos generar sentencias SQL a través de SQL y no queremos ejecutarlas, el código es el siguiente:



Consultas más avanzadas

Tabla JOIN


Insertar datos


Datos de actualización


Eliminar datos

(Fin)





Anterior:Las etiquetas de módulos de memoria Hynix (Hynix) y Micron (Micron) se explican en detalle
Próximo:ESXI 7 comprueba el modelo de memoria y el tamaño del host del servidor
Publicado el 13-10-2022 15:19:47 |
Aprender a aprender, menos mal
Publicado el 14-10-2022 11:07:18 |
Aprende a aprender
 Propietario| Publicado el 2025-1-2 12:15:02 |
LINQKit es un conjunto gratuito de extensiones para usuarios avanzados de LINQ a SQL y Entity Framework. :El inicio de sesión del hipervínculo es visible.
 Propietario| Publicado el 2025-1-2 14:20:57 |
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com