Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 6572|Jawab: 4

[Inti .NET] [Pertempuran aktual]. Pembuat kueri SQL NET/C# berdasarkan sqlkata

[Salin tautan]
Dipaparkan pada 2022-10-12 22:07:53 | | | |
Persyaratan: Saya membaca artikel tentang sqlkata di Internet, "SqlKata - Convenient and Easy to Use Sql Query Builder", dan saya merasa bahwa plugin ini sangat berguna, Anda dapat secara dinamis mengatur nama dan kondisi tabel untuk menghasilkan pernyataan SQL aman yang sesuai, dan front-end memanggil sqlkata untuk melakukan operasi database melalui informasi konfigurasi formulir visual, dan Anda dapat mengonfigurasi antarmuka tanpa pemrograman dan hardcoding. Ini mirip dengan penggunaan jOOQ saya sebelumnya dalam proyek pengembangan Java.

Kata SqlKata

SqlKata Query Generator adalah generator kueri SQL yang kuat yang ditulis dalam C#. Ini aman dan agnostik bingkai. Terinspirasi oleh pembuat kueri teratas yang tersedia, seperti Laravel Query Builder dan Knex.

Generator kueri SQL dinamis yang kuat yang mendukung Sql Server, MySql, PostgreSql, Oracle, dan Firebird.

Alamat GitHub:Login hyperlink terlihat.
Alamat dokumen resmi:Login hyperlink terlihat.

SQL Server menyiapkan data pengujian

Pertama, kami menggunakan database MSSQL untuk membuat tabel pengujian baru dan menghasilkan beberapa data pengujian, skripnya adalah sebagai berikut:



Membuat aplikasi konsol .NET Core 3.1 baru

Tambahkan paket SqlKata dan SqlKata.Execution, Microsoft.Data.SqlClient menggunakan Nuget dengan perintah berikut:


Kode konsol adalah sebagai berikut:

exec sp_executesql N'SELECT * FROM [TestTableSize] WHERE [MyKeyField] = @p0 ORDER BY (SELECT 0) OFFSET @p1 ROWS FETCH NEXT @p2 ROWS ONLY',N'@p0 nvarchar(4000),@p1 bigint,@p2 int',@p0= N'0000000088',@p1=0,@p2=10



Coba kueri salah satuTabel yang tidak ada, kesalahannya adalah sebagai berikut:

Pengecualian yang tidak ditangani. Microsoft.Data.SqlClient.SqlException (0x80131904): Nama objek tidak valid 'Hei'.
   di Microsoft.Data.SqlClient.SqlConnection.OnError(Pengecualian SqlException, Boolean breakConnection, Action'1 wrapCloseInAction)
   di Microsoft.Data.SqlClient.SqlInternalConnection.OnError(Pengecualian SqlException, Boolean breakConnection, Action'1 wrapCloseInAction)
   di Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, pemanggil BooleanHasConnectionLock, Boolean asyncClose)
   di Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   di Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
   di Microsoft.Data.SqlClient.SqlDataReader.get_MetaData()
   di Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   di 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)
   di 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)
   di Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, metode String)
   di Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(Perilaku CommandBehavior)
   di Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior Behavior)
   di System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(Perilaku Command)
   di Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, perilaku CommandBehavior) di /_/Dapper/SqlMapper.cs:line 1066
   di Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, perintah CommandDefinition, Ketik effectiveType)+MoveNext() di /_/Dapper/SqlMapper.cs:line 1094
   di System.Collections.Generic.List'1..ctor(koleksi IEnumerable'1)
   di System.Linq.Enumerable.ToList[TSource](sumber IEnumerable'1)
   di Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) di /_/ Dapper/SqlMapper.cs: jalur 734
   di SqlKata.Execution.QueryFactory.Get[T](Kueri kueri, transaksi IDbTransaction, batas waktu Nullable'1)
   di SqlKata.Execution.QueryExtensions.Get[T](Kueri kueri, transaksi IDbTransaction, batas waktu Nullable'1)
   di SqlKata.Execution.QueryExtensions.Get(Kueri kueri, transaksi IDbTransaction, batas waktu Nullable'1)
   di SqlKataDemo.Program.Main(String[] args) di C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da
Nomor Kesalahan: 208, Status: 1, Kelas: 16


Jika kita hanya ingin menghasilkan pernyataan sql melalui SqlKata dan tidak ingin menjalankannya, kodenya adalah sebagai berikut:



Kueri yang lebih lanjutan

Tabel JOIN


Sisipkan data


Perbarui data


Menghapus data

(Akhir)





Mantan:Label modul memori Hynix (Hynix) dan Micron (Micron) dijelaskan secara rinci
Depan:ESXI 7 memeriksa model memori dan ukuran host server
Dipaparkan pada 2022-10-13 15:19:47 |
Belajar belajar, hal yang baik
Dipaparkan pada 2022-10-14 11:07:18 |
Belajar belajar
 Tuan tanah| Dipaparkan pada 2025-1-2 12:15:02 |
LINQKit adalah rangkaian ekstensi gratis untuk pengguna tingkat lanjut LINQ ke SQL dan Entity Framework. :Login hyperlink terlihat.
 Tuan tanah| Dipaparkan pada 2025-1-2 14:20:57 |
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com