zoukankan      html  css  js  c++  java
  • SqlController




    //
    ---------------------------------------------------------------- // <copyright file="SqlController.cs" company="Microsoft"> // Copyright (c) Microsoft Corporation. All rights reserved. // </copyright> //---------------------------------------------------------------- namespace QuickAnswer { using System; using System.Collections; using System.Data; using System.Data.Common; using System.Data.SqlClient; using System.Xml; /// <summary> /// DBアクセス SQLの実行クラス /// </summary> public sealed class SqlController : IDisposable { /// <summary> /// コネクション オブジェクト /// </summary> private SqlConnection sqlConnection; /// <summary> /// トランザクション オブジェクト /// </summary> private SqlTransaction sqlTransaction; /// <summary> /// Reader 保持フィールド. /// </summary> private ArrayList readers = new ArrayList(); /// <summary> /// SqlCommandTimeout Field /// </summary> private int? commandTimeout = null; /// <summary> /// Initializes a new instance of the SqlController class /// </summary> /// <param name="connectionString">Database 接続文字列</param> public SqlController(string connectionString) { this.sqlConnection = new SqlConnection(); this.sqlConnection.ConnectionString = connectionString; this.sqlConnection.Open(); } /// <summary> /// Gets or sets SqlCommandのタイムアウト時間 /// </summary> public int? SqlCommandTimeOut { get { return this.commandTimeout; } set { this.commandTimeout = value; } } /// <summary> /// トランザクション の開始 /// </summary> /// <returns>SqlTransaction オブジェクト</returns> public SqlTransaction BeginTransaction() { this.sqlTransaction = this.sqlConnection.BeginTransaction(); return this.sqlTransaction; } /// <summary> /// SQLを実行し、 DBからデータを取得. /// </summary> /// <param name="sqlCommand">SQL Command Class</param> /// <param name="sqlParameters">埋め込み パラメータ一覧</param> /// <param name="commandType">SqlCommandType Text or StoredProcedure</param> /// <returns>SqlDataReader の返却</returns> public SqlDataReader ExecuteReader( SqlCommand sqlCommand) { SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); this.readers.Add(sqlDataReader); return sqlDataReader; } /// <summary> /// SQLを実行し、DBからデータを取得. /// 1行1列目の値を返します。結果セットの行が0行の場合、nullを返します。 /// </summary> /// <param name="sqlCommand">SQL Command Class</param> /// <param name="sqlParameters">埋め込み パラメータ一覧</param> /// <param name="commandType">SqlCommandType Text or StoredProcedure</param> /// <returns>1行1列目 の値を取得する</returns> public static object ExecuteScalar( SqlCommand sqlCommand) { using (SqlDataReader sqlDataReader = sqlCommand.ExecuteReader()) { if (!sqlDataReader.HasRows) { return null; } sqlDataReader.Read(); return sqlDataReader[0]; } } /// <summary> /// SQLを実行し、DBからデータを取得. /// 結果セットが存在しない場合は、空のDataTableを返却します. /// </summary> /// <param name="sqlCommand">SQL Command Class</param> /// <param name="sqlParameters">埋め込み パラメータ一覧</param> /// <param name="commandType">SqlCommandType Text or StoredProcedure</param> /// <returns>DataTable を返却する</returns> public DataTable ExecuteDataTable( SqlCommand sqlCommand) { SqlDataReader sqlDataReader = this.ExecuteReader(sqlCommand); DataTable dt = new DataTable(); if (sqlDataReader.HasRows) { dt.Load(sqlDataReader); } return dt; } /// <summary> /// SQLを実行し、DBからデータを取得. /// 結果セットが存在しない場合は、空のDataSetを返却します. /// </summary> /// <param name="sqlCommand">SQL Command Class</param> /// <param name="sqlParameters">埋め込み パラメータ一覧</param> /// <param name="commandType">SqlCommandType Text or StoredProcedure</param> /// <returns>DataSet を返却する</returns> public static DataSet ExecuteDataSet( SqlCommand sqlCommand) { using (SqlDataAdapter adapter = new SqlDataAdapter(sqlCommand)) { DataSet ds = new DataSet(); adapter.Fill(ds); return ds; } } /// <summary> /// SQLを実行し、 XML形式のデータを取得. /// </summary> /// <param name="sqlCommand">SQL Command Class</param> /// <param name="sqlParameters">埋め込み パラメータ一覧</param> /// <param name="commandType">SqlCommandType Text or StoredProcedure</param> /// <returns>XmlReader を返却する</returns> public XmlReader ExecuteXmlReader( SqlCommand sqlCommand) { XmlReader xmlReader = sqlCommand.ExecuteXmlReader(); this.readers.Add(xmlReader); return xmlReader; } /// <summary> /// Execute Non Queryを実行する. /// </summary> /// <param name="sqlCommand">SQL Command Class</param> /// <param name="sqlParameters">埋め込み パラメータ一覧</param> /// <param name="commandType">SqlCommandType Text or StoredProcedure</param> /// <returns>影響を受けた行数の カウント</returns> public static int ExecuteNonQuery( DbCommand sqlCommand) { return sqlCommand.ExecuteNonQuery(); } /// <summary> /// リソース の解放を行う. /// </summary> public void Dispose() { // ReaderのClose. for (IEnumerator ie = this.readers.GetEnumerator(); ie.MoveNext();) { if (ie.Current is SqlDataReader) { ((SqlDataReader)ie.Current).Close(); } if (ie.Current is XmlReader) { ((XmlReader)ie.Current).Close(); } } this.readers = new ArrayList(); // Transactionの破棄. if (this.sqlTransaction != null) { this.sqlTransaction.Dispose(); this.sqlTransaction = null; } // Connectionの返却. if (this.sqlConnection != null) { this.sqlConnection.Close(); this.sqlConnection = null; } } /// <summary> /// SqlCommand の生成. /// </summary> /// <param name="sqlParameters">埋め込み パラメータ一覧</param> /// <returns>SqlCommand の返却</returns> public SqlCommand GetSqlCommand( SqlParameter[] sqlParameters) { // SqlCommandの生成 SqlCommand sqlCommand = new SqlCommand(); sqlCommand.CommandType = CommandType.StoredProcedure; //sqlCommand.CommandText = commandText; sqlCommand.Connection = this.sqlConnection; if (this.commandTimeout != null) { sqlCommand.CommandTimeout = (int)this.commandTimeout; } if (this.sqlTransaction != null) { sqlCommand.Transaction = this.sqlTransaction; } if (sqlParameters != null) { foreach (SqlParameter sqlParameter in sqlParameters) { sqlCommand.Parameters.Add(sqlParameter); } } return sqlCommand; } } }

    调用:

      

     using (SqlController sqlCon = new SqlController(strConn))
                    {
                        // パラメーターを設定
                        SqlParameter[] sqlParameter = 
                                                {
                                                  new SqlParameter("@PrmBrand", brand),
                                                  new SqlParameter("@PrmModel", model),
                                                  new SqlParameter("@PrmFMCModelTypeCode", fmcModelTypeCode)
                                                  };
    
    
                        // SQLを実行し、 DBからデータを取得
                        SqlCommand sqlCommand = sqlCon.GetSqlCommand(sqlParameter);
                        sqlCommand.CommandText = "spIFWSearchCatalogCarsByBrandModelFmc";
    
                        using (SqlDataReader sqlReader = sqlCon.ExecuteReader(sqlCommand))
                        {
                            if (sqlReader.Read())
                            {
                                do
                                {
                                    CatalogCarGrade catalogCar = new CatalogCarGrade();
                                    catalogCar.MakerCode = AutosServiceUtil.GetString(sqlReader["BrandCode"]);
                                }
                                }
                            }
    //----------------------------------------------------------------
    // <copyright file="SqlCommandType.cs" company="Microsoft">
    //    Copyright (c) Microsoft Corporation.  All rights reserved.
    // </copyright>
    //----------------------------------------------------------------
    
    namespace QuickAnswer
    {
        /// <summary>
        /// Sql コマンドタイプ
        /// </summary>
        public enum SqlCommandType
        {
            /// <summary>
            /// クエリ指定
            /// Text
            /// </summary>
            Text,
    
            /// <summary>
            /// ストアドプロシージャ指定
            /// StoredProcedure
            /// </summary>
            StoredProcedure,
        }
    }
  • 相关阅读:
    java期末复习2
    java期末复习
    Educational Codeforces Round 76 (Rated for Div. 2)
    ICPC南昌时间安排
    codeforces 597 div2 ABCDF
    codeforces 597 div2 ABC
    Vue中provide和inject 用法
    Js打印九九乘法表
    document.documentElement和document.body的区别
    移动端关于横屏问题
  • 原文地址:https://www.cnblogs.com/2814/p/2773130.html
Copyright © 2011-2022 走看看