ホテル管理システム
ogi
yesterday 1a1c8e71fcd14858f595029f089b2d4a00202b32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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
{
    /// <summary>
    /// 直接DBへアクセスする仕組み
    /// データベース制御(クライアント側)
    /// </summary>
    public class DemoAccess : DataAccessDirectBase, IDisposable, IDemo
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="access"></param>
        public DemoAccess(DataAccess access)
        {
            TableName = "M_Demo";
            DBAccess = access;
        }
 
        public void Dispose()
        {
        }
 
        /// <summary>
        /// 排他チェックのため、最新更新日取得する
        /// </summary>
        /// <param name="pID"></param>
        /// <returns></returns>
        public int GetUpdateID(int pID)
        {
            return CConvert.ToInt(DBAccess.ExecuteScalar($"SELECT UpdateID FROM {TableName} WHERE ID = {pID}"));
        }
 
        /// <summary>
        /// 存在チェック
        /// </summary>
        /// <param name="pID"></param>
        /// <returns></returns>
        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;
        }
 
        /// <summary>
        /// データ行を取得する
        /// </summary>
        /// <param name="pID"></param>
        /// <returns></returns>
        public Demo GetItem(int pID)
        {
            var result = DBAccess.GetDataReader<Demo>($"SELECT * FROM {TableName}", (reader, data) =>
            {
                while (reader.Read())
                {
                    data.ConvertReader(reader);
                }
            });
            return result;
        }
 
        /// <summary>
        /// テーブル全データ返す
        /// </summary>
        /// <param name="where"></param>
        /// <returns></returns>
        public DataTable GetMasterGridData(string where)
        {
            return DBAccess.GetDataTable($"SELECT A.* FROM {TableName} A {(string.IsNullOrEmpty(where) ? string.Empty : $"WHERE {where}")} ORDER BY A.ID");
        }
 
        /// <summary>
        /// データ削除
        /// </summary>
        /// <param name="where"></param>
        /// <returns></returns>
        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;
        }
 
        /// <summary>
        /// 追加・更新
        /// </summary>
        /// <param name="add"></param>
        /// <param name="item"></param>
        /// <returns></returns>
        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;
        }
 
        /// <summary>
        /// 追加
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public DataResult Add(Demo data)
        {
            return AddOrUpdate(true, data);
        }
 
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public DataResult Update(Demo data)
        {
            return AddOrUpdate(false, data);
        }
    }
}