απαιτήσεις: Διάβασα ένα άρθρο σχετικά με το sqlkata στο Διαδίκτυο, "SqlKata - Βολικό και εύκολο στη χρήση Sql Query Builder", και πιστεύω ότι αυτό το πρόσθετο είναι πολύ χρήσιμο, μπορείτε να ορίσετε δυναμικά ονόματα και συνθήκες πινάκων για να δημιουργήσετε αντίστοιχες ασφαλείς δηλώσεις SQL και το front-end καλεί το sqlkata να εκτελεί λειτουργίες βάσης δεδομένων μέσω οπτικών πληροφοριών διαμόρφωσης φόρμας και μπορείτε να διαμορφώσετε μια διεπαφή χωρίς προγραμματισμό και σκληρή κωδικοποίηση. Αυτό είναι παρόμοιο με την προηγούμενη χρήση του jOOQ σε έργα ανάπτυξης Java.
SqlKata
Το SqlKata Query Generator είναι ένα ισχυρό πρόγραμμα δημιουργίας ερωτημάτων Sql γραμμένο σε C#. Είναι ασφαλές και αγνωστικό ως προς το πλαίσιο. Εμπνευσμένο από τα κορυφαία διαθέσιμα προγράμματα δημιουργίας ερωτημάτων, όπως το Laravel Query Builder και το Knex.
Μια ισχυρή δυναμική δημιουργία ερωτημάτων Sql που υποστηρίζει Sql Server, MySql, PostgreSql, Oracle και Firebird.
Διεύθυνση GitHub:Η σύνδεση με υπερσύνδεσμο είναι ορατή. Επίσημη διεύθυνση εγγράφου:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Ο SQL Server προετοιμάζει τα δεδομένα δοκιμής
Αρχικά, χρησιμοποιούμε τη βάση δεδομένων MSSQL για να δημιουργήσουμε έναν νέο πίνακα δοκιμών και να δημιουργήσουμε ορισμένα δεδομένα δοκιμής, το σενάριο έχει ως εξής:
Δημιουργία νέας εφαρμογής κονσόλας .NET Core 3.1
Προσθέστε τα πακέτα SqlKata και SqlKata.Execution, Microsoft.Data.SqlClient χρησιμοποιώντας το Nuget με την ακόλουθη εντολή:
Ο κωδικός της κονσόλας έχει ως εξής:
exec sp_executesql N'SELECT * ΑΠΟ [TestTableSize] ΟΠΟΥ [MyKeyField] = @p0 ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ (ΕΠΙΛΟΓΗ 0) ΜΕΤΑΤΟΠΙΣΗ @p1 ΣΕΙΡΕΣ FETCH NEXT @p2 ROWS ONLY',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) στο Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action'1 wrapCloseInAction) στο Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) στο Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) στο Microsoft.Data.SqlClient.SqlDataReader.TryConsumeMetaData() στο Microsoft.Data.SqlClient.SqlDataReader.get_MetaData() στο Microsoft.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) στο 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'1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String method) στο Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) στο Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(συμπεριφορά CommandBehavior) στο Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(συμπεριφορά CommandBehavior) στο System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(συμπεριφορά CommandBehavior) στο Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, συμπεριφορά CommandBehavior) στο /_/Dapper/SqlMapper.cs:line 1066 στο Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, εντολή CommandDefinition, Type effectiveType)+MoveNext() στο /_/Dapper/SqlMapper.cs:line 1094 στο System.Collections.Generic.List'1..ctor(IEnumerable'1 συλλογή) στο System.Linq.Enumerable.ToList[TSource](IEnumerable'1 πηγή) στο Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable'1 commandTimeout, Nullable'1 commandType) στο /_/ Dapper/SqlMapper.cs:γραμμή 734 στο SqlKata.Execution.QueryFactory.Get[T](Ερώτημα ερωτήματος, συναλλαγή IDbTransaction, χρονικό όριο Nullable'1) 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) στο SqlKataDemo.Program.Main(String[] args) στο C:\Users\itsvse_pc\source\repos\WindowsFormsApp1\SqlKataDemo\Program.cs:line 20
ClientConnectionId:49158892-5a24-4aa8-8249-232fba2674da Αριθμός σφάλματος:208,Κατάσταση:1,Κατηγορία:16
Εάν θέλουμε απλώς να δημιουργήσουμε εντολές sql μέσω του SqlKata και δεν θέλουμε να τις εκτελέσουμε, ο κώδικας έχει ως εξής:
Πιο σύνθετα ερωτήματα
Πίνακας JOIN
Εισαγωγή δεδομένων
Ενημέρωση δεδομένων
Διαγραφή δεδομένων
(Τέλος)
|