NetCore可視化ツールとのDataTableの下で

名前空間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。
        } 

    }

 

おすすめ

転載: www.cnblogs.com/hts92/p/11298813.html