Requisitos: Li um artigo sobre sqlkata na Internet, "SqlKata - Conveniente e Fácil de Usar para Sql Query Builder", e acho que esse plugin é muito útil, você pode definir nomes e condições de tabelas dinamicamente para gerar instruções SQL seguras correspondentes, e a interface chama sqlkata para realizar operações de banco de dados por meio de informações visuais de configuração de formulários, além de configurar uma interface sem programação e codificação fixa. Isso é semelhante ao meu uso anterior do jOOQ em projetos de desenvolvimento em Java.
SqlKata
O Gerador de Consultas SqlKata é um poderoso gerador de consultas SQL escrito em C#. É seguro e independente de quadro. Inspirado pelos principais construtores de consultas disponíveis, como Laravel Query Builder e Knex.
Um poderoso gerador dinâmico de consultas SQL que suporta SQL Server, MySql, PostgreSql, Oracle e Firebird.
Endereço do GitHub:O login do hiperlink está visível. Endereço oficial do documento:O login do hiperlink está visível.
O SQL Server prepara os dados de teste
Primeiro, usamos o banco de dados MSSQL para criar uma nova tabela de teste e gerar alguns dados de teste, o script é o seguinte:
Crie um novo aplicativo de console .NET Core 3.1
Adicione os pacotes SqlKata e SqlKata.Execution, Microsoft.Data.SqlClient usando Nuget com o seguinte comando:
O código do console é o seguinte:
exec sp_executesql N'SELECT * FROM [TestTableSize] ONDE [MyKeyField] = @p0 ORDENAR POR (SELECT 0) DESLOCAMENTO @p1 LINHAS BUSCAR PRÓXIMO @p2 APENAS LINHAS',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10
Tente enviar uma consultaUma tabela que não existe, o erro é o seguinte:
Exceção não resolvida. Microsoft.Data.SqlClient.SqlException (0x80131904): Nome 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) em Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData() em Microsoft.Data.SqlClient.SqlDataReader.get_MetaData() at Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, boolean shouldCacheForAlwaysEncrypted) em 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, método String) at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, método String) em Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(comportamento do CommandBehavior) at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(comportamento do Comando) em System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) em /_/Dapper/SqlMapper.cs:line 1066 em Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, comando CommandDefinition, Type effectiveType)+MoveNext() em /_/Dapper/SqlMapper.cs:line 1094 em System.Collections.Generic.List'1..ctor(IEnumerable'1 collection) em System.Linq.Enumerable.ToList[TSource](IEnumerable'1 fonte) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) em /_/ Dapper/SqlMapper.cs:linha 734 at SqlKata.Execution.QueryFactory.Get[T](Consulta de consulta, transação IDbTransaction, tempo limite Nullable'1) at SqlKata.Execution.QueryExtensions.Get[T](Consulta de consulta, transação IDbTransaction, tempo de espera Nullable'1) at SqlKata.Execution.QueryExtensions.Get(Consulta de consulta, transação IDbTransaction, tempo limite Nullable'1) em SqlKataDemo.Program.Main(String[] args) em C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:linha 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da Erro Número: 208, Estado: 1, Turma: 16
Se quisermos apenas gerar instruções sql pelo SqlKata e não quisermos executá-las, o código é o seguinte:
Consultas mais avançadas
Tabela JOIN
Inserir dados
Dados de atualização
Excluir dados
(Fim)
|