Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 6572|Yanıt: 4

[.NET Core] [Gerçek dövüş]. NET/C# SQL sorgu oluşturucu sqlkata tabanlı

[Bağlantıyı kopyala]
2022-10-12 tarihinde 22:07:53 tarihinde yayınlandı | | | |
Gereksinimler: İnternette sqlkata hakkında "SqlKata - Kullanışlı ve Kullanımı Kolay Sql Sorgu Oluşturucu" adlı bir makale okudum ve bu eklentinin çok faydalı olduğunu düşünüyorum; tablo isimlerini ve koşullarını dinamik olarak ayarlayarak karşılık gelen güvenli SQL ifadeleri oluşturabilirsiniz, ön uç ise görsel form yapılandırma bilgileri aracılığıyla veritabanı işlemlerini gerçekleştirmek için sqlkata çağırıyor ve programlama ile sert kodlama olmadan bir arayüz yapılandırabilirsiniz. Bu, Java geliştirme projelerinde jOOQ'u daha önce kullandığım şeye benziyor.

SqlKata

SqlKata Sorgu Oluşturucu, C# ile yazılmış güçlü bir SQL sorgu oluşturucudur. Güvenli ve çerçeveye bağlı değildir. Laravel Query Builder ve Knex gibi en iyi sorgu oluşturucularından ilham aldım.

SQL Server, MySql, PostgreSql, Oracle ve Firebird'ü destekleyen güçlü dinamik bir Sql sorgu oluşturucu.

GitHub adresi:Bağlantı girişi görünür.
Resmi belge adresi:Bağlantı girişi görünür.

SQL Server test verilerini hazırlayır

İlk olarak, MSSQL veritabanını kullanarak yeni bir test tablosu oluşturuyoruz ve bazı test verileri üretiyoruz, betik şu şekildedir:



Yeni bir .NET Core 3.1 konsol uygulaması oluştur

Nuget kullanarak SqlKata ve SqlKata.Execution, Microsoft.Data.SqlClient paketlerini aşağıdaki komutla ekleyin:


Konsol kodu şu şekildedir:

exec sp_executesql N'SELECT * [TestTableSize]'den BURADA [MyKeyField] = @p0 ORDER by (SELECT 0) OFFSET @p1 SATIR SADECE @p2 SATIR GETIR',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Birini sorgulamayı dene.Var olmayan bir tablo, hata şöyledir:

Çözülemeyen istisna. Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid object name '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, 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, String method)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior davranışı)
   Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior) içinde /_//Dapper/SqlMapper.cs:line 1066 içinde
   at Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition komutu, Type effectiveType)+MoveNext() in /_/Dapper/SqlMapper.cs:line 1094
   System.Collections.Generic.List'1.ctor(IEnumerable'1 koleksiyonunda) adresinde.
   at System.Linq.Enumerable.ToList[TSource](IEnumerable'1 source)
   at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) in /_/ içinde Dapper/SqlMapper.cs:line 734
   at SqlKata.Execution.QueryFactory.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get[T](Query query, IDbTransaction transaction, Nullable'1 timeout)
   at SqlKata.Execution.QueryExtensions.Get(Query query, IDbTransaction transaction, Nullable'1 timeout)
   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
Hata Numarası:208,Durum:1,Sınıf:16


Eğer sadece SqlKata üzerinden sql ifadeleri oluşturmak istiyor ve onları çalıştırmak istemiyoruzsa, kod şöyledir:



Daha gelişmiş sorgular

JOIN tablosu


Veri ekle


Verileri güncelleme


Verileri sil

(Son)





Önceki:Hynix (Hynix) ve Micron (Micron) bellek modülü etiketleri ayrıntılı olarak açıklanmıştır
Önümüzdeki:ESXI 7, sunucu ana bilgisayarının bellek modelini ve boyutunu kontrol eder
2022-10-13 tarihinde 15:19:47 tarihinde yayınlandı |
Öğrenmeyi öğrenmek, iyi olan
2022-10-14 11:07:18 tarihinde yayınlandı |
Öğrenmeyi öğren
 Ev sahibi| 2025-1-2 tarihinde 12:15:02 tarihinde yayınlandı |
LINQKit, LINQ'den SQL'e ve Entity Framework ileri kullanıcıları için ücretsiz bir uzantı paketidir. :Bağlantı girişi görünür.
 Ev sahibi| 2025-1-2 tarihinde 14:20:57 tarihinde yayınlandı |
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com