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);
}
}
}