/// <summary> /// 先頭行のvalueフィールドの値を取得 /// </summary> /// <typeparam name="T">valueフィールドの型</typeparam> /// <param name="conn"></param> /// <param name="sql"></param> /// <returns></returns> public static T GetFirstValue <T>(NpgsqlConnection conn, string sql, string fieldName = "value") { T result = default(T); // null NpgsqlDataReader dr = null; string errorMessage = null; // DBエラーリセット CommonUtil.SetLastDBError(0); NpgsqlCommand cmd = null; try { if (conn.State != ConnectionState.Open) { conn.Open(); } cmd = new NpgsqlCommand(sql, conn); dr = cmd.ExecuteReader(); if (dr.HasRows) { dr.Read(); int index = dr.GetOrdinal(fieldName); if (dr.IsDBNull(index)) { } else { result = (T)dr[index]; } } } catch (Exception ex) { //DBアクセスエラー // エラーログ出力 errorMessage = ex.Message.ToString(); CiLog cErrlog = new CiLog(); // ログ出力クラス cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); CommonUtil.SetLastDBError(ex.HResult); } finally { if (cmd != null) { cmd.Dispose(); } if (dr != null) { dr.Close(); } } if (errorMessage != null) { conn.Close(); // throw new Exception(errorMessage); } return(result); }
/// <summary> /// テーブルから一行読み込んで、modelクラスのインスタンスにロード /// </summary> /// <typeparam name="T">modelクラス(BaseModelの派生クラス)</typeparam> /// <param name="conn">DBへの接続インスタンス</param> /// <param name="sql">SQL文</param> /// <returns>modelクラスのインスタンス</returns> public static T GetFirst <T>(NpgsqlConnection conn, string sql) where T : BaseModel, new() { T model = null; NpgsqlDataReader dr = null; string errorMessage = null; // DBエラーリセット CommonUtil.SetLastDBError(0); NpgsqlCommand cmd = null; try { if (conn.State != ConnectionState.Open) { conn.Open(); } cmd = new NpgsqlCommand(sql, conn); dr = cmd.ExecuteReader(); if (dr.HasRows) { dr.Read(); // 最初の1レコードをメンバー変数に読み込む model = new T(); model.LoadProp(dr); } else { model = null; } } catch (Exception ex) { //DBアクセスエラー // エラーログ出力 errorMessage = ex.Message.ToString(); CiLog cErrlog = new CiLog(); // ログ出力クラス cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); CommonUtil.SetLastDBError(ex.HResult); } finally { if (cmd != null) { cmd.Dispose(); } if (dr != null) { dr.Close(); } } if (errorMessage != null) { conn.Close(); // throw new Exception(errorMessage); } return(model); }
/// <summary> /// テーブルから複数行読み込んで、modelクラスインスタンスの配列にロード /// </summary> /// <typeparam name="T">modelクラス(BaseModelの派生クラス)</typeparam> /// <param name="conn">DBへの接続インスタンス</param> /// <param name="sql">SQL文</param> /// <param name="count">インスタンス数。省略時は行の終わりまで</param> /// <returns>modelクラスのインスタンス</returns> public static T[] GetRows <T>(NpgsqlConnection conn, string sql, int count = int.MaxValue) where T : BaseModel, new() { List <T> Models = new List <T>(); // DBエラーリセット CommonUtil.SetLastDBError(0); string errorMessage = null; NpgsqlCommand cmd = null; NpgsqlDataReader dr = null; try { if (conn.State != ConnectionState.Open) { conn.Open(); } cmd = new NpgsqlCommand(sql, conn); dr = cmd.ExecuteReader(); for (int i = 0; dr.Read() && (i < count); i++) { T model = new T(); model.LoadProp(dr); Models.Add(model); } } catch (Exception ex) { //DBアクセスエラー // エラーログ出力 errorMessage = ex.Message.ToString(); CiLog cErrlog = new CiLog(); // ログ出力クラス cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); CommonUtil.SetLastDBError(ex.HResult); } finally { if (cmd != null) { cmd.Dispose(); } if (dr != null) { dr.Close(); } } if (errorMessage != null) { conn.Close(); // throw new Exception(errorMessage); } return(Models.ToArray()); }
/// <summary> /// Cell監視処理 /// Timerにより一定間隔で呼び出される /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TimerFunc(object sender, EventArgs e) { try { if (m_isFirstUpdate) { // 初回実行のとき m_isFirstUpdate = false; // タイマーを再設定 StopTimer(); // 2回目からは設定ファイルにしたがって一定間隔で処理する SetupTimer(Int32.Parse(Properties.Settings.Default.Cell_interval)); } if (!m_isInUpdate) { m_isInUpdate = true; Update(); m_isInUpdate = false; } } catch (Exception ex) { Console.WriteLine(ex.ToString()); CiLog log = new CiLog(); // ログ出力クラス // エラーログ出力 log.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); StopTimer(); // MessageBox.Show(string.Format(Properties.Resources.ERROR_EXCEPTION, ex.ToString())); } }