MySql数据库操作类

  1. ///---------------------------------------------------------------------------
  2. /// 機能ID   :DataAccess
  3. ///
  4. /// 機能名   :DB操作クラス
  5. ///
  6. /// システム   :バッチもばっちり
  7. ///
  8. /// 作成日   :2008年6月3日
  9. ///
  10. /// 作成者   :
  11. ///
  12. /// 機能説明   :DB操作機能を提供する。
  13. ///---------------------------------------------------------------------------
  14. using System;
  15. using System.Configuration;
  16. using System.Data;
  17. using System.Collections;
  18. using System.Data.OleDb;
  19. using MySql.Data.MySqlClient;
  20. namespace CommonPrj
  21. {
  22.     public class DBAccess
  23.     {
  24.         // DB接続情報:MySQL
  25.         private readonly string m_strConnectionString = 
  26.             ConfigurationManager.ConnectionStrings["SQLConnString"].ConnectionString;
  27.         // DB接続情報:EXCEL
  28.         private readonly string m_strExcelConnectionString =
  29.            ConfigurationManager.ConnectionStrings["ExcelConnString"].ConnectionString;
  30.         ///--------------------------------------------------------------------------
  31.         ///
  32.         /// 機能     :SQL文の生成
  33.         ///
  34.         /// 返り値   :変換した文字列
  35.         ///
  36.         /// 引き数   :p_strSql   - テンプレートSQL文
  37.         ///           p_strParam - パラメータ配列
  38.         ///
  39.         /// 作成日  :2008年6月3日
  40.         ///
  41.         /// 作成者  :
  42.         ///
  43.         /// 機能説明 :SQL文の生成を行う。
  44.         ///
  45.         /// 注意事項 :なし
  46.         ///
  47.         ///--------------------------------------------------------------------------
  48.         public string CreateSQLText(string p_strSql, string[] p_strParam)
  49.         {
  50.             // SQL文の生成を行う。
  51.             return string.Format(p_strSql, p_strParam);
  52.         }
  53.         ///--------------------------------------------------------------------------
  54.         ///
  55.         /// 機能     :データ追加/更新/削除
  56.         ///
  57.         /// 返り値   :更新されたレコード件数
  58.         ///
  59.         /// 引き数   :p_strCmdText   - SQL文
  60.         ///
  61.         /// 作成日  :2008年6月3日
  62.         ///
  63.         /// 作成者  :
  64.         ///
  65.         /// 機能説明 :データ追加/更新/削除
  66.         ///
  67.         /// 注意事項 :なし
  68.         ///
  69.         ///--------------------------------------------------------------------------
  70.         public int ExecuteNonQuery(string p_strCmdText)
  71.         {
  72.             MySqlConnection conn= new MySqlConnection(m_strConnectionString);
  73.             try
  74.             {
  75.                 MySqlCommand cmd = new MySqlCommand();
  76.                 PrepareCommand(conn, null, cmd, p_strCmdText);
  77.                 // データ更新を実行
  78.                 int val = cmd.ExecuteNonQuery();
  79.                 // SQL文に関するログを出力
  80.                 LogAccess.WriteLog(p_strCmdText);
  81.                 return val;
  82.             }
  83.             catch (Exception ex)
  84.             {
  85.                 throw ex;
  86.             }
  87.             finally
  88.             {
  89.                 conn.Close();
  90.             }
  91.         }
  92.         ///--------------------------------------------------------------------------
  93.         ///
  94.         /// 機能     :データの一括追加/更新/削除
  95.         ///
  96.         /// 返り値   :なし
  97.         ///
  98.         /// 引き数   :p_objArrList   - SQL文リスト
  99.         ///
  100.         /// 作成日  :2008年6月3日
  101.         ///
  102.         /// 作成者  :
  103.         ///
  104.         /// 機能説明 :データの一括追加/更新/削除
  105.         ///
  106.         /// 注意事項 :なし
  107.         ///
  108.         ///--------------------------------------------------------------------------
  109.         public void ExecuteNonQuery(ArrayList p_objArrList)
  110.         {
  111.             MySqlConnection conn = new MySqlConnection(m_strConnectionString);
  112.             MySqlCommand cmd = new MySqlCommand();
  113.             try
  114.             {
  115.                 conn.Open();
  116.                 MySqlTransaction tr = conn.BeginTransaction();
  117.                 // SQL文毎に、検索を実行
  118.                 foreach (string cmdText in p_objArrList)
  119.                 {
  120.                     PrepareCommand(conn,tr,cmd,cmdText);
  121.                     cmd.ExecuteNonQuery();
  122.                 }
  123.                 tr.Commit();
  124.             }
  125.             catch (Exception ex)
  126.             {
  127.                 throw ex;
  128.             }
  129.             finally
  130.             {
  131.                 conn.Close();
  132.             }
  133.         }
  134.         ///--------------------------------------------------------------------------
  135.         ///
  136.         /// 機能     :データ検索
  137.         ///
  138.         /// 返り値   :取得したのデータセット
  139.         ///
  140.         /// 引き数   :p_strCmdText   - SQL文
  141.         ///
  142.         /// 作成日  :2008年6月3日
  143.         ///
  144.         /// 作成者  :
  145.         ///
  146.         /// 機能説明 :データ検索
  147.         ///
  148.         /// 注意事項 :なし
  149.         ///
  150.         ///--------------------------------------------------------------------------        
  151.         public DataSet ExecuteDataSet(string p_strCmdText)
  152.         {
  153.             MySqlCommand cmd = new MySqlCommand();
  154.             MySqlConnection conn = new MySqlConnection(m_strConnectionString);
  155.             MySqlDataAdapter da = new MySqlDataAdapter();
  156.             DataSet ds = new DataSet();
  157.             try
  158.             {
  159.                 PrepareCommand(conn, null, cmd, p_strCmdText);
  160.                 da.SelectCommand = cmd;
  161.                 da.Fill(ds);
  162.                 // SQL文に関するログを出力
  163.                 LogAccess.WriteLog(p_strCmdText);
  164.                 return ds;
  165.             }
  166.             catch (Exception ex)
  167.             {
  168.                 throw ex;
  169.             }
  170.             finally
  171.             {
  172.                 conn.Close();
  173.             }
  174.         }
  175.         ///--------------------------------------------------------------------------
  176.         ///
  177.         /// 機能     :データ検索
  178.         ///
  179.         /// 返り値   :取得したのデータセット
  180.         ///
  181.         /// 引き数   :p_strCmdText   - SQL文
  182.         ///          :p_LogFlag      - ログファイル出力有無    True - 有  False - 無
  183.         ///
  184.         /// 作成日  :2008年6月3日
  185.         ///
  186.         /// 作成者  :
  187.         ///
  188.         /// 機能説明 :データ検索
  189.         ///
  190.         /// 注意事項 :なし
  191.         ///
  192.         ///--------------------------------------------------------------------------        
  193.         public DataSet ExecuteDataSet(string p_strCmdText,bool p_LogFlag)
  194.         {
  195.             MySqlCommand cmd = new MySqlCommand();
  196.             MySqlConnection conn = new MySqlConnection(m_strConnectionString);
  197.             MySqlDataAdapter da = new MySqlDataAdapter();
  198.             DataSet ds = new DataSet();
  199.             try
  200.             {
  201.                 PrepareCommand(conn, null, cmd, p_strCmdText);
  202.                 da.SelectCommand = cmd;
  203.                 da.Fill(ds);
  204.                 // ログファイル出力の場合
  205.                 if (p_LogFlag)
  206.                 {
  207.                     // SQL文に関するログを出力
  208.                     LogAccess.WriteLog(p_strCmdText);
  209.                 }
  210.                 return ds;
  211.             }
  212.             catch (Exception ex)
  213.             {
  214.                 throw ex;
  215.             }
  216.             finally
  217.             {
  218.                 conn.Close();
  219.             }
  220.         }
  221.         ///--------------------------------------------------------------------------
  222.         ///
  223.         /// 機能     :データ単値取得
  224.         ///
  225.         /// 返り値   :取得したの値
  226.         ///
  227.         /// 引き数   :p_strCmdText   - SQL文
  228.         ///
  229.         /// 作成日  :2008年6月3日
  230.         ///
  231.         /// 作成者  :
  232.         ///
  233.         /// 機能説明 :データ単値取得する。
  234.         ///
  235.         /// 注意事項 :なし
  236.         ///
  237.         ///--------------------------------------------------------------------------
  238.         public object ExecuteScalar(string p_strCmdText)
  239.         {
  240.             MySqlCommand cmd = new MySqlCommand();
  241.             MySqlConnection conn = new MySqlConnection(m_strConnectionString);
  242.             try
  243.             {
  244.                 PrepareCommand(conn,null,cmd,p_strCmdText);
  245.                 //検索を実行
  246.                 object val = cmd.ExecuteScalar();
  247.                 //SQL文に関するログを出力
  248.                 LogAccess.WriteLog(p_strCmdText);
  249.                 return val;
  250.             }
  251.             catch (Exception ex)
  252.             {
  253.                 throw ex;
  254.             }
  255.             finally
  256.             {
  257.                 conn.Close();
  258.             }
  259.         }
  260.         ///--------------------------------------------------------------------------
  261.         ///
  262.         /// 機能     :コメント変数を設定
  263.         ///
  264.         /// 返り値   :なし
  265.         ///
  266.         /// 引き数   :conn      -DB接続オブジェクト
  267.         ///           trans   -トランザクションオブジェクト
  268.         ///           cmd       -コマンドオブジェクト
  269.         ///           cmdText   - SQL文
  270.         /// 
  271.         /// 作成日  :2008年6月3日
  272.         ///
  273.         /// 作成者  :
  274.         ///
  275.         /// 機能説明 :コメント変数を設定する。
  276.         ///
  277.         /// 注意事項 :なし
  278.         ///
  279.         ///--------------------------------------------------------------------------
  280.         private void PrepareCommand(MySqlConnection conn, MySqlTransaction trans,
  281.             MySqlCommand cmd, string cmdText)
  282.         {
  283.             //DB接続していない場合、接続する
  284.             if (conn.State != ConnectionState.Open)
  285.             {
  286.                 conn.Open();
  287.             }
  288.             cmd.Connection = conn;
  289.             cmd.CommandText = cmdText;
  290.             //トランザクション有の場合
  291.             if (trans != null)
  292.             {
  293.                 cmd.Transaction = trans;
  294.             }
  295.             cmd.CommandType = CommandType.Text;
  296.         }
  297.         ///--------------------------------------------------------------------------
  298.         ///
  299.         /// 機能     :Excelデータ検索
  300.         ///
  301.         /// 返り値   :取得したのDataTable
  302.         ///
  303.         /// 引き数   :p_strFilePath - Excelファイルのパス
  304.         ///           p_strCmdText - SQL文
  305.         ///
  306.         /// 作成日  :2008年6月3日
  307.         ///
  308.         /// 作成者  :
  309.         ///
  310.         /// 機能説明 :Excelデータ検索
  311.         ///
  312.         /// 注意事項 :なし
  313.         ///
  314.         ///--------------------------------------------------------------------------
  315.         public DataTable ExecuteExcelData(string p_strFilePath, string p_strCmdText)
  316.         {
  317.             OleDbConnection conn = new OleDbConnection(m_strExcelConnectionString + p_strFilePath +
  318.                 ";Extended Properties=/"Excel 8.0;HDR=YES;IMEX=1/"");
  319.             OleDbDataAdapter cmd = new OleDbDataAdapter(p_strCmdText, conn);
  320.             DataTable dt = new DataTable();
  321.             try
  322.             {
  323.                 conn.Open();
  324.                 cmd.Fill(dt);
  325.                 return dt;
  326.             }
  327.             catch (Exception ex)
  328.             {
  329.                 throw ex;
  330.             }
  331.             finally
  332.             {
  333.                 conn.Close();
  334.             }
  335.         }
  336.         ///--------------------------------------------------------------------------
  337.         ///
  338.         /// 機能     :Excelワークシート名の取得処理
  339.         ///
  340.         /// 返り値   :p_strFilePath - Excelファイルのパス
  341.         ///
  342.         /// 引き数   :なし
  343.         ///
  344.         /// 作成日   :2008年6月3日
  345.         ///
  346.         /// 作成者   :
  347.         ///
  348.         /// 機能説明 :Excelワークシート名の取得処理を行う。
  349.         ///
  350.         /// 注意事項 :なし
  351.         ///
  352.         ///--------------------------------------------------------------------------
  353.         public string[] GetExcelSheetName(string p_strFilePath)
  354.         {
  355.             OleDbConnection conn = new OleDbConnection(m_strExcelConnectionString + p_strFilePath +
  356.                 ";Extended Properties=/"Excel 8.0;HDR=YES;IMEX=1/"");
  357.             try
  358.             {
  359.                 conn.Open();
  360.                 DataTable dtSchema = conn.GetOleDbSchemaTable(
  361.                     OleDbSchemaGuid.Tables, new object[] { nullnullnull"TABLE" });
  362.                 string[] strTableName = new string[dtSchema.Rows.Count];
  363.                 for (int i = 0; i < dtSchema.Rows.Count; i++)
  364.                 {
  365.                     strTableName[i] = dtSchema.Rows[i]["TABLE_NAME"].ToString();
  366.                 }
  367.                 return strTableName;
  368.             }
  369.             catch (Exception ex)
  370.             {
  371.                 throw ex;
  372.             }
  373.             finally
  374.             {
  375.                 conn.Close();
  376.             }
  377.         }
  378.     }
  379. }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值