요구사항: 인터넷에서 "SqlKata - 편리하고 사용하기 쉬운 SQL 쿼리 빌더"라는 글을 읽었는데, 이 플러그인이 매우 유용하다고 느꼈습니다. 테이블 이름과 조건을 동적으로 설정해 안전한 SQL 문장을 생성할 수 있고, 프론트엔드가 시각화된 폼 구성 정보를 통해 sqlkata를 호출해 데이터베이스 작업을 수행할 수 있고, 프로그래밍이나 하드코딩 없이도 인터페이스를 구성할 수 있습니다. 이것은 제가 이전에 자바 개발 프로젝트에서 jOOQ를 사용했던 것과 비슷합니다.
SqlKata
SqlKata 쿼리 생성기는 C#으로 작성된 강력한 SQL 쿼리 생성기입니다. 보안이 안전하고 프레임에 구애받지 않습니다. Laravel Query Builder와 Knex 같은 최고의 쿼리 빌더에서 영감을 받았습니다.
SQL Server, MySql, PostgreSql, Oracle, Firebird를 지원하는 강력한 동적 SQL 쿼리 생성기입니다.
GitHub 주소:하이퍼링크 로그인이 보입니다. 공식 문서 주소:하이퍼링크 로그인이 보입니다.
SQL 서버는 테스트 데이터를 준비합니다
먼저, MSSQL 데이터베이스를 사용해 새로운 테스트 테이블을 만들고 테스트 데이터를 생성합니다. 스크립트는 다음과 같습니다:
새로운 .NET Core 3.1 콘솔 앱 생성
Nuget을 사용하여 SqlKata와 SqlKata.Execution, Microsoft.Data.SqlClient 패키지를 다음 명령어로 추가하세요:
콘솔 코드는 다음과 같습니다:
exec sp_executesql N'SELECT * [TestTableSize]에서 [MyKeyField] = @p0순서 (SELECT 0) 오프셋 @p1 행은 @p2다음 행만', n'@p0 nvarchar(4000), @p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10
한 곳에 문의해 보세요존재하지 않는 표, 오차는 다음과 같습니다:
처리되지 않은 예외. Microsoft.Data.SqlClient.SqlException (0x80131904): 유효하지 않은 객체 이름 '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, 불리언 shouldCacheForAlwaysEncrypted) at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean isAsync, Int32 타임아웃, 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, String 메서드) at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) at Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) in /_/Dapper/SqlMapper.cs:line 1066 at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition command, Type effectiveType)+MoveNext() in /_/Dapper/SqlMapper.cs:line 1094 System.Collections.Generic.List'1..ctor(IEnumerable'1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable'1 소스) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) in /_/ 대퍼/SqlMapper.cs:734라인 at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction transaction, Nullable'1 타임아웃) at SqlKata.Execution.QueryExtensions.Get[T](Query query, IDbTransaction transaction, Nullable'1 타임아웃) at SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction 트랜잭션, Nullable'1 타임아웃) at SqlKataDemo.Program.Main(String[] args) in C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da 오류 번호: 208, 주: 1, 클래스: 16
만약 SQLKata를 통해 SQL 문장만 생성하고 실행하고 싶지 않다면, 코드는 다음과 같습니다:
더 고급 쿼리
조인 테이블
데이터 삽입
업데이트 데이터
데이터 삭제
(끝)
|