이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 6572|회답: 4

[.NET 코어] [실제 전투]. sqlkata 기반 NET/C# SQL 쿼리 생성기

[링크 복사]
2022-10-12 22:07:53에 게시됨 | | | |
요구사항: 인터넷에서 "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 문장만 생성하고 실행하고 싶지 않다면, 코드는 다음과 같습니다:



더 고급 쿼리

조인 테이블


데이터 삽입


업데이트 데이터


데이터 삭제

(끝)





이전의:하이닉스(하이닉스)와 마이크론(마이크론) 메모리 모듈 라벨이 자세히 설명되어 있습니다
다음:ESXI 7은 서버 호스트의 메모리 모델과 크기를 검사합니다
2022-10-13 15:19:47에 게시됨 |
배우는 법을 배우는 건 다행이에요
2022-10-14 11:07:18에 게시됨 |
배우기 위해 배우세요
 집주인| 2025-1-2 12:15:02에 게시됨 |
LINQKit은 LINQ에서 SQL 및 Entity Framework 고급 사용자를 위한 무료 확장 모음입니다. :하이퍼링크 로그인이 보입니다.
 집주인| 2025-1-2 14:20:57에 게시됨 |
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com