qrmode 에서 wms rcv 태그 인식되게 함
This commit is contained in:
356
Handler/Project/Manager/DBHelper.cs
Normal file
356
Handler/Project/Manager/DBHelper.cs
Normal file
@@ -0,0 +1,356 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Data.SqlClient;
|
||||
using System.Data;
|
||||
using AR;
|
||||
using System.Web.UI.WebControls;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
public static class DBHelper
|
||||
{
|
||||
public static SqlConnection GetConnection()
|
||||
{
|
||||
var cs = SETTING.Data.WMS_DB_PROD ? Properties.Settings.Default.WMS_PRD : Properties.Settings.Default.WMS_DEV;
|
||||
return new SqlConnection(cs);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static int ExecuteNonQuery(string sql, params SqlParameter[] p)
|
||||
{
|
||||
var cn = GetConnection();
|
||||
try
|
||||
{
|
||||
var cmd = new SqlCommand(sql, cn);
|
||||
if (p != null) cmd.Parameters.AddRange(p);
|
||||
cn.Open();
|
||||
return cmd.ExecuteNonQuery();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// 예외 처리 (필요에 따라 로깅 추가)
|
||||
return -1;
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cn != null && cn.State != ConnectionState.Closed)
|
||||
cn.Close();
|
||||
}
|
||||
}
|
||||
|
||||
// CodeIgniter 스타일의 UPDATE 헬퍼 (Dictionary 방식)
|
||||
public static int Update(string tableName, Dictionary<string, object> data, string whereClause = "", params SqlParameter[] whereParams)
|
||||
{
|
||||
if (data == null || data.Count == 0)
|
||||
return 0;
|
||||
|
||||
var setClause = new List<string>();
|
||||
var parameters = new List<SqlParameter>();
|
||||
int paramIndex = 0;
|
||||
|
||||
// SET 절 생성
|
||||
foreach (var item in data)
|
||||
{
|
||||
string paramName = $"@set{paramIndex}";
|
||||
setClause.Add($"{item.Key} = {paramName}");
|
||||
parameters.Add(new SqlParameter(paramName, item.Value ?? DBNull.Value));
|
||||
paramIndex++;
|
||||
}
|
||||
|
||||
// WHERE 절 파라미터 추가
|
||||
if (whereParams != null)
|
||||
{
|
||||
parameters.AddRange(whereParams);
|
||||
}
|
||||
|
||||
string sql = $"UPDATE {tableName} SET {string.Join(", ", setClause)}";
|
||||
if (!string.IsNullOrEmpty(whereClause))
|
||||
{
|
||||
sql += $" WHERE {whereClause}";
|
||||
}
|
||||
|
||||
return ExecuteNonQuery(sql, parameters.ToArray());
|
||||
}
|
||||
|
||||
// SqlParameter 배열 방식의 UPDATE 헬퍼
|
||||
public static int Update(string tableName, string setClause, string whereClause = "", params SqlParameter[] parameters)
|
||||
{
|
||||
string sql = $"UPDATE {tableName} SET {setClause}";
|
||||
if (!string.IsNullOrEmpty(whereClause))
|
||||
{
|
||||
sql += $" WHERE {whereClause}";
|
||||
}
|
||||
|
||||
return ExecuteNonQuery(sql, parameters);
|
||||
}
|
||||
|
||||
|
||||
// 여러 조건을 위한 헬퍼 (Dictionary 방식)
|
||||
public static int UpdateWhere(string tableName, Dictionary<string, object> data, Dictionary<string, object> whereConditions)
|
||||
{
|
||||
if (whereConditions == null || whereConditions.Count == 0)
|
||||
return Update(tableName, data);
|
||||
|
||||
var whereClause = new List<string>();
|
||||
var whereParams = new List<SqlParameter>();
|
||||
int paramIndex = 0;
|
||||
|
||||
foreach (var condition in whereConditions)
|
||||
{
|
||||
string paramName = $"@where{paramIndex}";
|
||||
whereClause.Add($"{condition.Key} = {paramName}");
|
||||
whereParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value));
|
||||
paramIndex++;
|
||||
}
|
||||
|
||||
return Update(tableName, data, string.Join(" AND ", whereClause), whereParams.ToArray());
|
||||
}
|
||||
|
||||
public static int UpdateWhere(string tableName, string setClause, string whereColumn, object whereValue)
|
||||
{
|
||||
return Update(tableName, setClause, $"{whereColumn} = @whereValue", new SqlParameter("@whereValue", whereValue));
|
||||
}
|
||||
|
||||
// CodeIgniter 스타일의 DELETE 헬퍼
|
||||
public static int Delete(string tableName, string whereClause = "", params SqlParameter[] whereParams)
|
||||
{
|
||||
string sql = $"DELETE FROM {tableName}";
|
||||
if (!string.IsNullOrEmpty(whereClause))
|
||||
{
|
||||
sql += $" WHERE {whereClause}";
|
||||
}
|
||||
|
||||
return ExecuteNonQuery(sql, whereParams);
|
||||
}
|
||||
|
||||
// 간단한 WHERE 조건을 위한 DELETE 헬퍼
|
||||
public static int DeleteWhere(string tableName, string whereColumn, object whereValue)
|
||||
{
|
||||
return Delete(tableName, $"{whereColumn} = @whereValue", new SqlParameter("@whereValue", whereValue));
|
||||
}
|
||||
|
||||
// 여러 조건을 위한 DELETE 헬퍼 (Dictionary 방식)
|
||||
public static int DeleteWhere(string tableName, Dictionary<string, object> whereConditions)
|
||||
{
|
||||
if (whereConditions == null || whereConditions.Count == 0)
|
||||
return Delete(tableName); // WHERE 절 없이 전체 삭제
|
||||
|
||||
var whereClause = new List<string>();
|
||||
var whereParams = new List<SqlParameter>();
|
||||
int paramIndex = 0;
|
||||
|
||||
foreach (var condition in whereConditions)
|
||||
{
|
||||
string paramName = $"@where{paramIndex}";
|
||||
whereClause.Add($"{condition.Key} = {paramName}");
|
||||
whereParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value));
|
||||
paramIndex++;
|
||||
}
|
||||
|
||||
return Delete(tableName, string.Join(" AND ", whereClause), whereParams.ToArray());
|
||||
}
|
||||
|
||||
// SqlParameter 배열을 받는 DELETE 헬퍼 오버로드
|
||||
public static int DeleteWhere(string tableName, string whereClause, params SqlParameter[] whereParams)
|
||||
{
|
||||
return Delete(tableName, whereClause, whereParams);
|
||||
}
|
||||
|
||||
// 테이블 전체 삭제 (TRUNCATE 대신 DELETE 사용)
|
||||
public static int DeleteAll(string tableName)
|
||||
{
|
||||
return Delete(tableName);
|
||||
}
|
||||
|
||||
// CodeIgniter 스타일의 SELECT 헬퍼
|
||||
public static DataTable Select(string tableName, string columns = "*", string whereClause = "", params SqlParameter[] whereParams)
|
||||
{
|
||||
string sql = $"SELECT {columns} FROM {tableName}";
|
||||
if (!string.IsNullOrEmpty(whereClause))
|
||||
{
|
||||
sql += $" WHERE {whereClause}";
|
||||
}
|
||||
|
||||
return Get(sql, whereParams);
|
||||
}
|
||||
|
||||
// 간단한 WHERE 조건을 위한 SELECT 헬퍼
|
||||
public static DataTable SelectWhere(string tableName, string columns = "*", string whereColumn = "", object whereValue = null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(whereColumn) || whereValue == null)
|
||||
return Select(tableName, columns);
|
||||
|
||||
return Select(tableName, columns, $"{whereColumn} = @whereValue", new SqlParameter("@whereValue", whereValue));
|
||||
}
|
||||
|
||||
// SqlParameter 배열을 받는 SELECT 헬퍼 오버로드
|
||||
public static DataTable SelectWhere(string tableName, string columns, string whereClause, params SqlParameter[] whereParams)
|
||||
{
|
||||
return Select(tableName, columns, whereClause, whereParams);
|
||||
}
|
||||
|
||||
// Dictionary로 WHERE 조건을 받는 SELECT 헬퍼 오버로드
|
||||
public static DataTable SelectWhere(string tableName, string columns, Dictionary<string, object> whereConditions)
|
||||
{
|
||||
if (whereConditions == null || whereConditions.Count == 0)
|
||||
return Select(tableName, columns);
|
||||
|
||||
var whereClause = new List<string>();
|
||||
var whereParams = new List<SqlParameter>();
|
||||
int paramIndex = 0;
|
||||
|
||||
foreach (var condition in whereConditions)
|
||||
{
|
||||
string paramName = $"@where{paramIndex}";
|
||||
whereClause.Add($"{condition.Key} = {paramName}");
|
||||
whereParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value));
|
||||
paramIndex++;
|
||||
}
|
||||
|
||||
return Select(tableName, columns, string.Join(" AND ", whereClause), whereParams.ToArray());
|
||||
}
|
||||
|
||||
// Dictionary로 WHERE 조건을 받는 SELECT 헬퍼 (기본 컬럼 *)
|
||||
public static DataTable SelectWhere(string tableName, Dictionary<string, object> whereConditions)
|
||||
{
|
||||
return SelectWhere(tableName, "*", whereConditions);
|
||||
}
|
||||
|
||||
// ORDER BY가 포함된 SELECT 헬퍼
|
||||
public static DataTable SelectOrderBy(string tableName, string columns = "*", string whereClause = "", string orderBy = "", params SqlParameter[] whereParams)
|
||||
{
|
||||
string sql = $"SELECT {columns} FROM {tableName}";
|
||||
if (!string.IsNullOrEmpty(whereClause))
|
||||
{
|
||||
sql += $" WHERE {whereClause}";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(orderBy))
|
||||
{
|
||||
sql += $" ORDER BY {orderBy}";
|
||||
}
|
||||
|
||||
return Get(sql, whereParams);
|
||||
}
|
||||
|
||||
// LIMIT이 포함된 SELECT 헬퍼 (TOP 사용)
|
||||
public static DataTable SelectLimit(string tableName, int limit, string columns = "*", string whereClause = "", string orderBy = "", params SqlParameter[] whereParams)
|
||||
{
|
||||
string sql = $"SELECT TOP {limit} {columns} FROM {tableName}";
|
||||
if (!string.IsNullOrEmpty(whereClause))
|
||||
{
|
||||
sql += $" WHERE {whereClause}";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(orderBy))
|
||||
{
|
||||
sql += $" ORDER BY {orderBy}";
|
||||
}
|
||||
|
||||
return Get(sql, whereParams);
|
||||
}
|
||||
|
||||
public static DataRow SelectFirst(string tableName, string columns = "*", Dictionary<string, object> whereParams = null)
|
||||
{
|
||||
if (whereParams == null || whereParams.Count == 0)
|
||||
return SelectFirst(tableName, columns);
|
||||
|
||||
var whereClause = new List<string>();
|
||||
var sqlParams = new List<SqlParameter>();
|
||||
int paramIndex = 0;
|
||||
|
||||
foreach (var condition in whereParams)
|
||||
{
|
||||
string paramName = $"@where{paramIndex}";
|
||||
whereClause.Add($"{condition.Key} = {paramName}");
|
||||
sqlParams.Add(new SqlParameter(paramName, condition.Value ?? DBNull.Value));
|
||||
paramIndex++;
|
||||
}
|
||||
|
||||
var dt = SelectLimit(tableName, 1, columns, string.Join(" AND ", whereClause), "", sqlParams.ToArray());
|
||||
return dt.Rows.Count > 0 ? dt.Rows[0] : null;
|
||||
}
|
||||
// 단일 행 조회 (첫 번째 행만)
|
||||
public static DataRow SelectFirst(string tableName, string columns = "*", string whereClause = "", params SqlParameter[] whereParams)
|
||||
{
|
||||
var dt = SelectLimit(tableName, 1, columns, whereClause, "", whereParams);
|
||||
return dt.Rows.Count > 0 ? dt.Rows[0] : null;
|
||||
}
|
||||
|
||||
// 단일 값 조회 (첫 번째 행의 첫 번째 컬럼)
|
||||
public static object SelectValue(string tableName, string column, string whereClause = "", params SqlParameter[] whereParams)
|
||||
{
|
||||
var row = SelectFirst(tableName, column, whereClause, whereParams);
|
||||
return row != null ? row[0] : null;
|
||||
}
|
||||
|
||||
public static T Get<T>(string sql, params SqlParameter[] p) where T : DataTable
|
||||
{
|
||||
var dt = (T)Activator.CreateInstance(typeof(T));
|
||||
var cn = GetConnection();
|
||||
try
|
||||
{
|
||||
var cmd = new SqlCommand(sql, cn);
|
||||
if (p != null) cmd.Parameters.AddRange(p);
|
||||
var da = new SqlDataAdapter(cmd);
|
||||
da.Fill(dt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cn != null && cn.State != ConnectionState.Closed)
|
||||
cn.Close();
|
||||
}
|
||||
return dt;
|
||||
}
|
||||
public static DataTable Get(string sql, params SqlParameter[] p)
|
||||
{
|
||||
var dt = new DataTable();
|
||||
var cn = GetConnection();
|
||||
try
|
||||
{
|
||||
var cmd = new SqlCommand(sql, cn);
|
||||
if (p != null) cmd.Parameters.AddRange(p);
|
||||
var da = new SqlDataAdapter(cmd);
|
||||
da.Fill(dt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cn != null && cn.State != ConnectionState.Closed)
|
||||
cn.Close();
|
||||
}
|
||||
|
||||
return dt;
|
||||
}
|
||||
public static void Fill(string sql, DataTable dt, params SqlParameter[] p)
|
||||
{
|
||||
var cn = GetConnection();
|
||||
try
|
||||
{
|
||||
var cmd = new SqlCommand(sql, cn);
|
||||
if (p != null) cmd.Parameters.Add(p);
|
||||
var da = new SqlDataAdapter(cmd);
|
||||
dt = new DataTable();
|
||||
da.Fill(dt);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (cn != null && cn.State != ConnectionState.Closed)
|
||||
cn.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user