using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace FCOMMON { public static partial class DBM { public static SqlConnection getCn() { string cs = FCOMMON.info.CS; SqlConnection cn = new SqlConnection(); cn.ConnectionString = cs; return cn; } public struct sItemInfo { public int idx; public string sid; public string model; public string supply; public string name; public string unit; public float scale; public string price; public int supplyidx; public string project; public int qty; } public static Boolean setImageData(System.Drawing.Image img, string table, string field, int idx) { var cn = getCn(); cn.Open(); Boolean retval = false; string sql = "update " + table + " set " + field + " = @data" + " where idx = @idx"; var cmd = new SqlCommand(sql, cn); System.IO.MemoryStream sm = new System.IO.MemoryStream(); img.Save(sm, System.Drawing.Imaging.ImageFormat.Jpeg); var buffer = sm.GetBuffer(); sm.Dispose(); cmd.Parameters.Add(new SqlParameter("idx", idx)); cmd.Parameters.Add(new SqlParameter("data", buffer)); try { cmd.ExecuteNonQuery(); retval = true; }catch (Exception ex) { } cn.Close(); cn.Dispose(); return retval; } public static System.Drawing.Image GetImageData(string table,string field,int idx) { var cn = getCn(); cn.Open(); string sql = "select " + field + " from "+table+" where idx = " + idx.ToString(); var cmd = new SqlCommand(sql, cn); var data = cmd.ExecuteScalar() as byte[]; System.Drawing.Bitmap bmp = null; if(data != null) { System.IO.MemoryStream ms = new System.IO.MemoryStream(data); bmp = new System.Drawing.Bitmap(ms, true); ms.Dispose(); } cn.Close(); cn.Dispose(); return bmp; } public static sItemInfo getLastPurchaseInfo(int idx) { var cn = getCn(); cn.Open(); var retval = new sItemInfo(); retval.idx = -1; string sql = "select isnull(max(idx),-1) from Purchase where pumidx = " + idx.ToString(); var cmd = new SqlCommand(sql, cn); int maxidx = int.Parse(cmd.ExecuteScalar().ToString()); if (maxidx == -1) return retval; cmd.CommandText = "select * from Purchase where idx = " + maxidx.ToString(); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.idx = (int)rdr["idx"]; if (rdr["sid"] != DBNull.Value) retval.sid = rdr["sid"].ToString(); if (rdr["pumscale"] != DBNull.Value) retval.model = rdr["pumscale"].ToString(); if (rdr["supply"] != DBNull.Value) retval.supply = rdr["supply"].ToString(); if (rdr["supplyidx"] != DBNull.Value) retval.supplyidx = int.Parse(rdr["supplyidx"].ToString()); else retval.supplyidx = -1; if (rdr["pumname"] != DBNull.Value) retval.name = rdr["pumname"].ToString(); if (rdr["pumunit"] != DBNull.Value) retval.unit = rdr["pumunit"].ToString(); if (rdr["project"] != DBNull.Value) retval.project = rdr["project"].ToString(); if (rdr["pumprice"] != DBNull.Value) retval.price = rdr["pumprice"].ToString(); else retval.price = "0"; if (rdr["pumqty"] != DBNull.Value) retval.qty = int.Parse(rdr["pumqty"].ToString()); else retval.qty = 0; } cn.Close(); cn.Dispose(); return retval; } public static sItemInfo getItemInfo(int idx) { var cn = getCn(); cn.Open(); var retval = new sItemInfo(); retval.idx = -1; string sql = "select * from Items where idx = " + idx.ToString(); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while(rdr.Read()) { retval.idx = (int)rdr["idx"]; if(rdr["sid"] != DBNull.Value) retval.sid = rdr["sid"].ToString(); if (rdr["model"] != DBNull.Value) retval.model = rdr["model"].ToString(); if (rdr["supply"] != DBNull.Value) retval.supply = rdr["supply"].ToString(); if (rdr["supplyidx"] != DBNull.Value) retval.supplyidx = int.Parse(rdr["supplyidx"].ToString()); if (rdr["name"] != DBNull.Value) retval.name = rdr["name"].ToString(); if (rdr["unit"] != DBNull.Value) retval.unit = rdr["unit"].ToString(); if (rdr["scale"] != DBNull.Value) retval.scale = float.Parse(rdr["scale"].ToString()); if (rdr["price"] != DBNull.Value) retval.price = rdr["price"].ToString(); } cn.Close(); cn.Dispose(); return retval; } public static int addItemInfo(sItemInfo info) { int retval = -1; var cn = getCn(); cn.Open(); string sql = "insert into Items" + " ([cate],[sid],[model],[supply],[supplyidx],[name],[unit],[scale],[price],[wuid],[wdate])" + " values " + " (@cate,@sid,@model,@supply,@supplyidx,@name,@unit,@scale,@price,@wuid,@wdate)"; var cmd = new SqlCommand(sql, cn); cmd.Parameters.Add(new SqlParameter("@cate", "etc")); cmd.Parameters.Add(new SqlParameter("@sid", info.sid)); cmd.Parameters.Add(new SqlParameter("@model", info.model)); cmd.Parameters.Add(new SqlParameter("@supply", info.supply)); cmd.Parameters.Add(new SqlParameter("@supplyidx", info.supplyidx)); cmd.Parameters.Add(new SqlParameter("@name", info.name)); cmd.Parameters.Add(new SqlParameter("@unit", info.unit)); cmd.Parameters.Add(new SqlParameter("@scale", info.scale)); cmd.Parameters.Add(new SqlParameter("@price", info.price)); cmd.Parameters.Add(new SqlParameter("@wuid", FCOMMON.info.Login.no)); cmd.Parameters.Add(new SqlParameter("@wdate", DateTime.Now)); var iCnt = cmd.ExecuteNonQuery(); if(iCnt == 1) { cmd.CommandText = "select isnull(idx,-1) from Items where [sid] = @sid"; cmd.Parameters.Clear(); cmd.Parameters.Add(new SqlParameter("sid", info.sid)); retval = (int)cmd.ExecuteScalar(); } cn.Close(); cn.Dispose(); return retval; } public static sItemInfo getItemInfo(string sid) { var cn = getCn(); cn.Open(); var retval = new sItemInfo(); retval.idx = -1; string sql = "select * from Items where [sid] = '" + sid + "'"; var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.idx = (int)rdr["idx"]; if (rdr["sid"] != DBNull.Value) retval.sid = rdr["sid"].ToString(); if (rdr["model"] != DBNull.Value) retval.model = rdr["model"].ToString(); if (rdr["supply"] != DBNull.Value) retval.supply = rdr["supply"].ToString(); if (rdr["supplyidx"] != DBNull.Value) retval.supplyidx = int.Parse(rdr["supplyidx"].ToString()); if (rdr["name"] != DBNull.Value) retval.name = rdr["name"].ToString(); if (rdr["unit"] != DBNull.Value) retval.unit = rdr["unit"].ToString(); if (rdr["scale"] != DBNull.Value) retval.scale = float.Parse(rdr["scale"].ToString()); if (rdr["price"] != DBNull.Value) retval.price = rdr["price"].ToString(); } cn.Close(); cn.Dispose(); return retval; } public static Dictionary getUserList(int baseLevel = 1) { string where = "isnull(level,0) >= " + baseLevel.ToString(); return getTwoColumnList("Users", "id", "name", where, "name"); } public static System.Data.DataTable getUserTable(int baseLevel = 1) { var list = getUserList(baseLevel); return MakeDataTable(list); } private static Dictionary MakeDataTable(List list) { var retval = new Dictionary(); foreach (var item in list) retval.Add(item, item); return retval; } private static System.Data.DataTable MakeDataTable(Dictionary list) { System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("Key"); dt.Columns.Add("Value"); dt.Columns.Add("KeyValue"); foreach (var item in list) { dt.Rows.Add(new string[] { item.Key, item.Value, string.Format("[{0}] {1}", item.Key, item.Value) }); } dt.AcceptChanges(); return dt; } public static Dictionary getProjectList(string StateCode = "") { string where = "status = '{0}'"; if (StateCode != "") where = string.Format(where, StateCode); else where = string.Empty; return getTwoColumnList("Projects", "idx", "name", where, "status,name"); } public static System.Data.DataTable getProjectData(string StateCode = "") { var list = getProjectList(StateCode); return MakeDataTable(list); } public static Dictionary getCodeList(string GroupCode="99") { string where = "Grp = '{0}'"; where = string.Format(where, GroupCode); return getTwoColumnList("Common", "code", "memo", where, "code"); } public static string getCodeSavlue(string GroupCode, string code) { var cn = getCn(); cn.Open(); var sql = "select isnull(SValue,'')" + " from Common" + " where Grp = '{0}' and code = '{1}'"; sql = string.Format(sql, GroupCode, code); var cmd = new SqlCommand(sql, cn); var data = cmd.ExecuteScalar(); cmd.Dispose(); cn.Close(); cn.Dispose(); return data.ToString(); } public static System.Data.DataTable getCodeTable(string GroupCode = "99") { var list = getCodeList(GroupCode); return MakeDataTable(list); } private static Dictionary getTwoColumnList(string table,string col1,string col2,string where="",string order="") { Dictionary retval = new Dictionary(); var cn = getCn(); cn.Open(); var sql = "select isnull({1},''),isnull({2},'')" + " from {0}"; if (where != "") sql += " where " + where; if (order != "") sql += " order by " + order; sql = string.Format(sql,table, col1, col2); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.Add(rdr[0].ToString(), rdr[1].ToString()); } rdr.Close(); cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static Dictionary getGroupTable(string GroupColumn, string table, string where = "", Boolean desc = false) { var list = getGroupList(GroupColumn, table, where, desc); return MakeDataTable(list); } /// /// 데이터중 첫번째 자료를 반환 합니다. /// /// /// /// /// /// public static String getFirstValue(string column,string table,string where="",string order="") { string retval = string.Empty; var cn = getCn(); cn.Open(); var sql = "select {0} " + " from {1} " + " where isnull({0},'') != '' "; if (where != "") sql += " and " + where; if (order != "") sql += " order by " + order; sql = string.Format(sql, "[" + column + "]", table); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { if (rdr[0] != null) retval = rdr[0].ToString(); } cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static List getGroupList(string GroupColumn, string table, string where = "",Boolean desc=false) { List retval = new List(); var cn = getCn(); cn.Open(); var sql = "select {0} " + " from {1} " + " where isnull({0},'') != '' "; if (where != "") sql += " and " + where; sql += " group by {0} " + " order by {0} "; if (desc) sql += " desc"; sql = string.Format(sql, "[" + GroupColumn + "]", table); var cmd = new SqlCommand(sql, cn); var rdr = cmd.ExecuteReader(); while (rdr.Read()) { retval.Add(rdr[0].ToString()); } cmd.Dispose(); cn.Close(); cn.Dispose(); return retval; } public static List getDateList(string table, string where = "",Boolean desc =false) { return getGroupList("pdate", table, where,desc); } } }