using HotelPms.Data; using HotelPms.Data.Common.Interface.Access; using HotelPms.Data.Master; using HotelPms.Share.Data; using HotelPms.Share.IO; using HotelPms.Share.Util; using System.Data; namespace HotelPms.DataAccessDirect.Client { /// /// 直接DBへアクセスする仕組み /// データベース制御(クライアント側) /// public class DemoAccess : DataAccessDirectBase, IDisposable, IDemo { /// /// /// /// public DemoAccess(DataAccess access) { TableName = "M_Demo"; DBAccess = access; } public void Dispose() { } /// /// 排他チェックのため、最新更新日取得する /// /// /// public int GetUpdateID(int pID) { return CConvert.ToInt(DBAccess.ExecuteScalar($"SELECT UpdateID FROM {TableName} WHERE ID = {pID}")); } /// /// 存在チェック /// /// /// public bool Exists(int pID) { return CConvert.ToInt(DBAccess.ExecuteScalar($"IF EXISTS(SELECT 1 FROM {TableName} WHERE ID = {pID}) SELECT 1 ELSE SELECT 0")) == 1; } /// /// データ行を取得する /// /// /// public Demo GetItem(int pID) { var result = DBAccess.GetDataReader($"SELECT * FROM {TableName}", (reader, data) => { while (reader.Read()) { data.ConvertReader(reader); } }); return result; } /// /// テーブル全データ返す /// /// /// public DataTable GetMasterGridData(string where) { return DBAccess.GetDataTable($"SELECT A.* FROM {TableName} A {(string.IsNullOrEmpty(where) ? string.Empty : $"WHERE {where}")} ORDER BY A.ID"); } /// /// データ削除 /// /// /// public DataResult Remove(string where) { DataResult result = new DataResult() { ErrNo = 0, ErrData = string.Empty }; string sql = $"DELETE FROM {TableName} WHERE {where}"; OperationLog.Instance.WriteLog($"Sql生成:{sql}"); if (DBAccess.ExecuteNonQuery(sql) == -1) { result.ErrNo = DBAccess.ErrNo; result.ErrData = DBAccess.ErrInfo; } OperationLog.Instance.WriteLog($"更新:{result.ToString()}"); return result; } /// /// 追加・更新 /// /// /// /// private DataResult AddOrUpdate(bool add, Demo item) { DataResult result = new DataResult() { ErrNo = 0, ErrData = string.Empty }; OperationLog.Instance.WriteLog($"データ請求:{item.ToString()}"); string sql = add ? item.AddSql() : item.UpdateSql(); OperationLog.Instance.WriteLog($"Sql生成:{sql}"); if (DBAccess.ExecuteNonQuery(sql) == -1) { result.ErrNo = DBAccess.ErrNo; result.ErrData = DBAccess.ErrInfo; } OperationLog.Instance.WriteLog($"更新:{result.ToString()}"); return result; } /// /// 追加 /// /// /// public DataResult Add(Demo data) { return AddOrUpdate(true, data); } /// /// 更新 /// /// /// public DataResult Update(Demo data) { return AddOrUpdate(false, data); } } }