名前空間System.Data、NetCore2.0とより多くのサポートでDtatTable。しかし2017DataTableなし可視化ツール、私は深く、直接ダウンロードVS2019を研究していません。そして、初期の数ヶ月SQLHelperオンライン直接支出インチ
サンプルコード:https://github.com/TengshengHou/NetCoreSample/tree/master/SQLHelperDemo
SQLHelper
パブリック クラスSQLHelper { IConfigurationの_configuration。 プライベート 文字列_connectionString。 公共SQLHelper(IConfiguration構成) { _configuration = 構成。 _connectionString = _configuration.GetConnectionString(" DefaultConnectionを" )。 } 公共 のintは、ExecuteNonQuery(SqlConnectionのCONN、ストリングcmdText、SqlParameter [] cmdParms、のSqlTransactionトランス) { リターンExecuteNonQuery(CONN、CommandType.Text、cmdText、cmdParms、トランス); } 公共 のintは、ExecuteNonQuery(SqlConnectionのCONN、CommandTypeをcmdType、ストリングcmdText、SqlParameter [] cmdParms、のSqlTransactionトランス) { SqlCommandオブジェクトCMD = conn.CreateCommand()。 int型のval = 0 ; 使用(CMD) { PrepareCommand(CMD、CONN、トランス、CommandType.Text、cmdText、cmdParms)を、 ヴァル = cmd.ExecuteNonQuery()。 cmd.Parameters.Clear(); } リターンヴァル; } 公共 SqlDataReaderののExecuteReader(SqlConnectionのCONN、CommandTypeをcmdType、ストリングcmdText、SqlParameter [] cmdParms) { SqlCommandオブジェクトCMD = conn.CreateCommand()。 PrepareCommand(CMD、CONN、ヌル、cmdType、cmdText、cmdParms)。 VaRの RDR = cmd.ExecuteReader(CommandBehavior.CloseConnection)。 返すRDRを。 } パブリックデータテーブルExecuteDataTable(SqlConnectionのCONN、CommandTypeをcmdType、ストリングcmdText、SqlParameter [] cmdParms) { たSystem.Data.DataTable DT =新しいのDataTable(); SqlCommandオブジェクトCMD = conn.CreateCommand()。 PrepareCommand(CMD、CONN、ヌル、cmdType、cmdText、cmdParms)。 System.Data.SqlClient.SqlDataAdapterダ = 新しいSqlDataAdapterオブジェクト(CMD); da.Fill(DT)。 リターンDT; } パブリック オブジェクトは、ExecuteScalar(SqlConnectionのCONN、CommandTypeをcmdType、ストリングcmdText、SqlParameter [] cmdParms) { SqlCommandオブジェクトCMD = conn.CreateCommand()。 PrepareCommand(CMD、CONN、ヌル、cmdType、cmdText、cmdParms)。 オブジェクトのval = cmd.ExecuteScalar()。 cmd.Parameters.Clear(); 返すのvalを。 } #regionプライベート プライベート ボイド PrepareCommand(SqlCommandオブジェクトのCMD、SqlConnectionのCONN、トランスのSqlTransaction、CommandTypeをcmdType、ストリングcmdText、SqlParameter [] commandParameters) { 場合(!conn.State = ConnectionState.Open) { conn.Open(); } // cmd.Connection = CONN。 cmd.CommandText = cmdText。 もし(トランス!= nullの) { cmd.Transaction = トランス。 } cmd.CommandType = cmdType。 // それらが提供されている場合、コマンドパラメータを添付し た場合(!commandParameters = ヌル) { AttachParameters(CMD、commandParameters)。 } } プライベート ボイドAttachParameters(SqlCommandオブジェクトコマンド、SqlParameter [] commandParameters) { foreachの(SqlParameterのP でcommandParameters) { //割り当てられていない値に由来する出力値を確認し た場合((p.Direction == ParameterDirection.InputOutput)&&(p.Value == NULL )) { p.Value = DBNull.Valueの。 } command.Parameters.Add(P)。 } } #endregionの #regionの デフォルトの接続 パブリックデータテーブルExecuteDataTable(ストリングcmdText、SqlParameter [] cmdParms) { データテーブルのdataTable。 使用して GetDefaultSqlConnection())(VARのSQLConnection = { のdataTable = この.ExecuteDataTable(SqlConnectionの、CommandType.Text、cmdText、cmdParms)。 } 戻りのdataTable。 } 公共 のintは、ExecuteNonQuery(ストリングcmdText、SqlParameter [] cmdParms) { int型にrowsAffected。 使用(VARのSQLConnection = GetDefaultSqlConnection()) { にrowsAffected =は、ExecuteNonQuery(SqlConnectionの、cmdText、cmdParms、NULL ); } リターンにrowsAffected。 } パブリック オブジェクトは、ExecuteScalar(ストリングcmdText、SqlParameter [] cmdParms) { オブジェクトretObj。 使用(VARの SqlConnectionオブジェクト= GetDefaultSqlConnection()) { retObj = は、ExecuteScalar(cmdText、cmdParms)。 } 戻りretObj。 } #endregion 公共のSqlConnection GetDefaultSqlConnection() { 戻り 新しいSqlConnectionオブジェクト(_connectionString)を、 } }
サービスの追加
スタートアップコン> ConfigureServices
services.AddTransient(typeof演算(SQLHelper))。
テストコール
[ルート(" API / [コントローラー] " )] [ApiController] パブリック クラスValuesController:ControllerBase { SQLHelper _sqlHelper。 公共ValuesController(SQLHelper sqlHelper) { _sqlHelper = sqlHelper。 } // GET API /値 [HTTPGET] 公共のActionResult <データテーブル> プレゼント() { 戻り(_sqlHelper.ExecuteDataTableを" SYSUSER SELECT * FROM "、NULL ); } //API /更新GET [HTTPGET(" 更新" )] 公共のActionResultを< INT > 更新() { SqlParameter [] cmdParms = 新しい SqlParameter [] { 新しい SqlParameter(" @PASSWORD " 、DBNull.Valueの)}。 返す _sqlHelper.ExecuteNonQuery(" UPDATE SYSUSERのSET PASSWORDを= @ PASSWORD WHERE LOGINNAME = '管理者' " 、cmdParms)。 } // GET API /更新 [HTTPGET(" UpdateTransaction ")] 公共のActionResult < INT > UpdateTransaction() { int型にrowsAffected = 0 。 SqlParameter [] cmdParms = 新しい SqlParameter [] { 新しい SqlParameter(" @PASSWORD "、" 123456 " )}。 使用(VAR CONN = _sqlHelper.GetDefaultSqlConnection()) { conn.Open(); VaRのトランザクション= conn.BeginTransaction(); してみてください { rowsAffected = _sqlHelper.ExecuteNonQuery(CONN、" UPDATE SYSUSERのSET PASSWORD = PASSWORD @ WHERE LOGINNAME = '管理者' " 、cmdParms、トランザクション)。 スロー 新しい例外(「試験」)。 transaction.Commit(); } キャッチ(例外e) { transaction.Rollback()。 スロー電子を。 } } リターンにrowsAffected。 } }