/// <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> /// 最初のDB読み込み /// </summary> public int InitialRead() { int ret = 0; try { conn.Open(); } catch (Exception ex) { // エラーログ出力 cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); return(1); } //システム定義読み込み LoadSysMainTbl(); return(ret); }
/// <summary> /// DBから初期情報をロード /// </summary> private bool Load_db() { int ret = 0; try { //設定ファイルの有無チェック string configfile = System.Reflection.Assembly.GetExecutingAssembly().Location + ".config"; if (System.IO.File.Exists(configfile) == false) { CommonUtil.showErrorMessage(string.Format(Mocs.Properties.Resources.ERROR_SETTING_FILE, configfile)); return(false); } int portno = Mocs.Properties.Settings.Default.DB_Port; if ((portno > 65535) || (portno < 0)) { //設定ファイルエラー CommonUtil.showErrorMessage(string.Format(Mocs.Properties.Resources.ERRPR_SETTING_FILE_DBPORT, portno.ToString())); return(false); } StringBuilder sb = new StringBuilder(128); sb.Append("Server=").Append(Mocs.Properties.Settings.Default.DB_HOST).Append(";Port=").Append(portno.ToString()); sb.Append(";User Id=").Append(Mocs.Properties.Settings.Default.DB_User).Append(";Password="******";Database=").Append(Mocs.Properties.Settings.Default.DB_Name).Append(";"); mocs_cell_db = new DBAccess(sb.ToString()); if ((ret = mocs_cell_db.InitialRead()) > 0) { //DBエラー CommonUtil.showErrorMessage(Mocs.Properties.Resources.ERRPR_CONNECT_DB); return(false); } // ステータステーブルを初期化 CellStatus.InitTable(this.mocs_cell_db.Conn); } catch (Exception ex) { // エラーログ出力 cErrlog.WriteLog(ex.ToString(), ex.StackTrace, System.Diagnostics.EventLogEntryType.Error); MessageBox.Show(string.Format(Mocs.Properties.Resources.ERROR_EXCEPTION, ex.ToString())); return(false); } return(true); }
/// <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())); } }