Reikalavimai: Aš perskaičiau straipsnį apie sqlkata internete, "SqlKata - Patogus ir paprastas naudoti Sql Query Builder", ir manau, kad šis įskiepis yra labai naudingas, galite dinamiškai nustatyti lentelių pavadinimus ir sąlygas generuoti atitinkamus saugius SQL sakinius, ir front-end kviečia sqlkata atlikti duomenų bazės operacijas per vizualinės formos konfigūracijos informaciją, ir jūs galite konfigūruoti sąsają be programavimo ir hardcoding. Tai panašu į mano ankstesnį jOOQ naudojimą Java kūrimo projektuose.
SqlKata
"SqlKata Query Generator" yra galingas "Sql" užklausų generatorius, parašytas C#. Jis yra saugus ir nepriklausomas nuo rėmo. Įkvėpta geriausių galimų užklausų kūrimo priemonių, tokių kaip "Laravel", "Query Builder" ir "Knex".
Galingas dinaminis SQL užklausų generatorius, palaikantis "Sql Server", "MySql", "PostgreSql", "Oracle" ir "Firebird".
"GitHub" adresas:Hipersaito prisijungimas matomas. Oficialus dokumento adresas:Hipersaito prisijungimas matomas.
SQL serveris paruošia bandymo duomenis
Pirma, mes naudojame MSSQL duomenų bazę, kad sukurtume naują bandymo lentelę ir sugeneruotume kai kuriuos bandymo duomenis, scenarijus yra toks:
Naujos ".NET Core 3.1" konsolės programos kūrimas
Pridėkite "SqlKata" ir "SqlKata.Execution", "Microsoft.Data.SqlClient" paketus naudodami "Nuget" naudodami šią komandą:
Konsolės kodas yra toks:
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
Pabandykite pateikti užklausąLentelė, kurios nėra, klaida yra tokia:
Neapdorota išimtis. Microsoft.Data.SqlClient.SqlException (0x80131904): neleistinas objekto pavadinimas "Hei". Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException išimtis, Bulio logikos pertraukaConnection, Action'1 wrapCloseInAction) Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException išimtis, Bulio logikos pertraukaConnection, Action'1 wrapCloseInAction) at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Bulio logikos skambintojasHasConnectionLock, Bulio logika 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, Bulio logika isInternal, Bulio logika forDescribeParameterEncryption, Bulio logikos turėtų CacheForAlwaysEncrypted) Microsoft.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Bulio logikos returnStream, Bulio logikos isAsync, Int32 skirtasis laikas, Task& task, Bulio logika asyncWrite, Bulio logika inRetry, SqlDataReader ds, Bulio logika describeParameterEncryptionRequest) Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Bulio logikos returnStream, TaskCompletionSource'1 užbaigimas, Int32 skirtasis laikas, Užduotis ir užduotis, Bulio logika ir naudojama talpykla, Bulio logikos asyncWrite, Bulio logikos inRetry, Eilutės metodas) Microsoft.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Bulio logikos returnStream, eilutės metodas) Microsoft.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior elgesys) Microsoft.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior elgesys) System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior elgesys) adresu Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Bulio logikos wasClosed, CommandBehavior elgesys) /_/Dapper/SqlMapper.cs:line 1066 Dapper.SqlMapper.QueryImpl[T](IDbConnection cnn, CommandDefinition komanda, tipas effectiveType)+MoveNext() /_/Dapper/SqlMapper.cs:line 1094 System.Collections.Generic.List'1..ctor(IEnumerable'1 rinkinys) System.Linq.Enumerable.ToList[TSource](IEnumerable'1 šaltinis) at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Bulio logikos buferis, Nullable'1 commandTimeout, Nullable'1 commandType) į /_/ Dapper/SqlMapper.cs:line 734 at SqlKata.Execution.QueryFactory.Get[T](Užklausos užklausa, IDbTransaction operacija, Nullable'1 skirtasis laikas) at SqlKata.Execution.QueryExtensions.Get[T](Užklausos užklausa, IDbTransaction operacija, Nullable'1 skirtasis laikas) at SqlKata.Execution.QueryExtensions.Get(Užklausos užklausa, IDbTransaction operacija, Nullable'1 skirtasis laikas) 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 Klaidos numeris: 208, būsena: 1, klasė: 16
Jei mes tiesiog norime generuoti sql sakinius per SqlKata ir nenorime jų vykdyti, kodas yra toks:
Išplėstinės užklausos
JOIN stalas
Įterpti duomenis
Atnaujinti duomenis
Duomenų naikinimas
(Pabaiga)
|