新增数据库类

master
xiaochanghai 1 year ago
parent 06d29c0172
commit a34ae9d50d
  1. 291
      Tiobon.Core.Common/DB/DbSql/DbInsert.cs
  2. 527
      Tiobon.Core.Common/DB/DbSql/DbSelect.cs
  3. 472
      Tiobon.Core.Common/DB/DbSql/DbUpdate.cs
  4. 1
      Tiobon.Core.Model/Tiobon.Core.Model.csproj

@ -0,0 +1,291 @@
using System;
using System.Collections.Generic;
using System.Text;
using EU.Core.UserManager;
using EU.Core.Utilities;
using Microsoft.AspNetCore.Mvc.Core;
namespace EU.Core
{
/// <summary>
/// Sql插入类
/// </summary>
public class DbInsert
{
#region 变量定义
private string sql;
private string createProgram;
private string rowId;
/// <summary>
/// 如果使用线程,此处可以指定插入用户代码,否则CREATED_BY为空
/// </summary>
public string CreatedBy { get; set; }
public string RowId
{
get { return rowId; }
set { rowId = value; }
}
private bool isInitDefaultValue = true;
/// <summary>
/// 是否初始化默认字段,像:ROW_ID,CREATED_BY,CREATED_DATE,CREATED_PROGRAM,TAG,ACTIVE_FLAG等,默认会初始化
/// </summary>
public bool IsInitDefaultValue
{
get
{
return isInitDefaultValue;
}
set
{
isInitDefaultValue = value;
}
}
private bool isInitRowId = true;
/// <summary>
/// 是否初始化ROW_ID字段(默认初始化),只有IsInitDefaultValue为true时才有效!
/// </summary>
public bool IsInitRowId
{
get
{
return isInitRowId;
}
set
{
isInitRowId = value;
}
}
#endregion
#region 构造函数
public DbInsert()
{
}
public DbInsert(string tableName)
{
SetTableName(tableName.ToUpper());
}
public DbInsert(string tableName, string createProgram)
{
SetTableName(tableName.ToUpper());
this.createProgram = createProgram;
}
public void SetTableName(string tableName)
{
sql = "INSERT INTO {0} () VALUES ()";
sql = string.Format(sql, tableName.ToUpper());
}
#endregion
#region Values
public void Values(string fieldName, string value)
{
if (string.IsNullOrEmpty(value)) return;
value = value.Replace("'", "''");
value = value.Trim();
string s = "N'{0}'";
s = string.Format(s, value);
FormatValue(fieldName.ToUpper(), s);
}
public void Values(string fieldName, Guid value)
{
string value1 = value.ToString();
if (string.IsNullOrEmpty(value1)) return;
value1 = value1.Replace("'", "''");
value1 = value1.Trim();
string s = "N'{0}'";
s = string.Format(s, value1);
FormatValue(fieldName.ToUpper(), s);
}
public void Values(string fieldName, Guid? value)
{
string value1 = value.ToString();
if (string.IsNullOrEmpty(value1)) return;
value1 = value1.Replace("'", "''");
value1 = value1.Trim();
string s = "N'{0}'";
s = string.Format(s, value1);
FormatValue(fieldName.ToUpper(), s);
}
public void Values(string fieldName, int value)
{
FormatValue(fieldName.ToUpper(), Convert.ToString(value));
}
public void Values(string fieldName, double value)
{
FormatValue(fieldName.ToUpper(), Convert.ToString(value));
}
public void Values(string fieldName, decimal value)
{
FormatValue(fieldName.ToUpper(), Convert.ToString(value));
}
public void Values(string fieldName, decimal? value)
{
FormatValue(fieldName.ToUpper(), Convert.ToString(value));
}
public void Values(string fieldName, DateTime value)
{
if (value == DateTime.MinValue) return;
string valTemp = string.Empty;
valTemp = Convert.ToString(value);
//valTemp = valTemp.Replace("'", "''");
string s = string.Empty;
s = "CAST('{0}' AS DATETIME)";
s = string.Format(s, valTemp);
FormatValue(fieldName.ToUpper(), s);
}
public void Values(string fieldName, DateTime? value)
{
if (value == null) return;
string valTemp = string.Empty;
valTemp = Convert.ToString(value);
//valTemp = valTemp.Replace("'", "''");
string s = string.Empty;
s = "CAST('{0}' AS DATETIME)";
s = string.Format(s, valTemp);
FormatValue(fieldName.ToUpper(), s);
}
#endregion
#region 加密插入
/// <summary>
/// 以加密方式插入
/// </summary>
/// <param name="fieldName"></param>
/// <param name="value"></param>
public void ValuesAsSecurity(string fieldName, string value)
{
if (string.IsNullOrEmpty(value)) return;
value = value.Replace("'", "''");
string s = "encryptbykey(key_guid('fookey'),N'{0}')";
s = string.Format(s, value);
FormatValue(fieldName.ToUpper(), s);
}
/// <summary>
/// 加密保存
/// </summary>
/// <param name="fieldName"></param>
/// <param name="value"></param>
public void ValuesAsSecurity(string fieldName, int value)
{
ValuesAsSecurity(fieldName.ToUpper(), Convert.ToString(value));
}
/// <summary>
/// 加密保存
/// </summary>
/// <param name="fieldName"></param>
/// <param name="value"></param>
public void ValuesAsSecurity(string fieldName, double value)
{
ValuesAsSecurity(fieldName.ToUpper(), Convert.ToString(value));
}
/// <summary>
/// 加密保存
/// </summary>
/// <param name="fieldName"></param>
/// <param name="value"></param>
public void ValuesAsSecurity(string fieldName, decimal value)
{
ValuesAsSecurity(fieldName.ToUpper(), Convert.ToString(value));
}
#endregion
#region Public Method
public string GetSql()
{
if (isInitRowId == true)
{
rowId = StringHelper.Id;
Values("ID", rowId);
}
if (isInitDefaultValue == true)
InitDefaultValues();
return sql;
}
#endregion
#region Private Method
private void FormatValue(string fieldName, string value)
{
if (value != null)
{
value = value.Trim();
}
if (DBHelper.MySql)
{
fieldName = fieldName.Replace("[", "`");
fieldName = fieldName.Replace("]", "`");
}
sql = sql.Replace("{", "{{");
sql = sql.Replace("}", "}}");
int n = sql.IndexOf("() VALUES");
if (n == -1)
{
n = sql.IndexOf(") VALUES");
sql = sql.Insert(n, ", {0} ");
n = sql.LastIndexOf(")");
sql = sql.Insert(n, ", {1}");
}
else
{
sql = sql.Insert(++n, " {0} ");
n = sql.LastIndexOf(")");
sql = sql.Insert(n, " {1}");
}
sql = string.Format(sql, fieldName.ToUpper(), value);
}
/// <summary>
/// 初始化Insert语句默认需要插入的值
/// </summary>
private void InitDefaultValues()
{
//DatabaseType dbType = DbAccess.GetDatabaseType();
//row_id
//if (DbAccess.IsOracle())
//{
// rowId = DbAccess.ExecuteScalar("SELECT F_GET_SYSID FROM DUAL") as string;
//}
//else
//{
// rowId = DbAccess.ExecuteScalar("SELECT REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120 ),'-',''),' ',''),':','')") as string;
//}
//create_by
Guid? createBy = UserContext.Current.User_Id;
if (createBy != Guid.Empty)
Values("CreatedBy", createBy);
//create_date
DateTime createDate = DateTime.Now;
Values("CreatedTime", createDate);
Values("GroupId", UserContext.Current.GroupId);
Values("CompanyId", UserContext.Current.CompanyId);
//create_program
//Values("CREATED_PROGRAM", createProgram);
//tag
Values("Tag", 1);
//active_flag
//Values("DELETE_FLAG", "N");
}
#endregion
}
}

@ -0,0 +1,527 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace EU.Core
{
public class DbSelect
{
#region 属性
private string tableNames;
private string primaryTableAlias;
private string companyId;
private string selectItems;
private string whereCondition;
private string orderBy;
private string groupBy;
private bool isInitDefaultValue = true;
/// <summary>
/// 是否初始化默认查询条件,如COMPANY_ID等
/// </summary>
public bool IsInitDefaultValue
{
get
{
return isInitDefaultValue;
}
set { isInitDefaultValue = value; }
}
#endregion
#region 构造函数
public DbSelect(string tableNames, string primaryTableAlias, string companyId)
{
this.tableNames = tableNames;
this.primaryTableAlias = primaryTableAlias;
this.companyId = companyId;
}
public DbSelect(string tableNames, string primaryTableAlias)
{
this.tableNames = tableNames;
this.primaryTableAlias = primaryTableAlias;
this.companyId = null;
}
#endregion
#region Select
/// <summary>
/// 解密查询
/// </summary>
/// <param name="selectItem"></param>
public void SelectSecurity(string selectItem)
{
string aliasName = selectItem.Substring(selectItem.IndexOf(".") + 1);
this.selectItems += "cast(decryptbykey(" + selectItem + ") AS NVARCHAR(256))" + " AS " + aliasName + ",";
}
/// <summary>
/// 解密查询
/// </summary>
/// <param name="selectItem"></param>
/// <param name="aliasName"></param>
public void SelectSecurity(string selectItem, string aliasName)
{
this.selectItems += "cast(decryptbykey(" + selectItem + ") AS NVARCHAR(256))" + " AS " + aliasName + ",";
}
/// <summary>
/// 对加密字段求和
/// </summary>
/// <param name="selectItem"></param>
public void SelectSecuritySum(string selectItem)
{
string aliasName = selectItem.Substring(selectItem.IndexOf(".") + 1);
this.selectItems += "isnull(sum(cast (cast(decryptbykey(" + selectItem + ") AS NVARCHAR(256)) as decimal(20,6))),0)" + " AS " + aliasName + ",";
}
/// <summary>
/// 对加密字段求和
/// </summary>
/// <param name="selectItem"></param>
/// <param name="aliasName"></param>
public void SelectSecuritySum(string selectItem, string aliasName)
{
this.selectItems += "isnull(sum(cast (cast(decryptbykey(" + selectItem + ") AS NVARCHAR(256)) as decimal(20,6))),0)" + " AS " + aliasName + ",";
}
public void Select(string selectItems)
{
this.selectItems += selectItems + ",";
}
public void Select(string selectItem, string aliasName)
{
this.selectItems += selectItem + " AS " + aliasName + ",";
}
public void Select(string selectItem, string aliasName, DateFormat dateFormat)
{
string tempValue = string.Empty;
switch (dateFormat)
{
case DateFormat.Month:
{
tempValue = "DBO.TO_CHAR(" + selectItem + ",'YYYY/MM')" + " AS " + aliasName + ",";
break;
}
case DateFormat.Day:
{
tempValue = "DBO.TO_CHAR(" + selectItem + ",'YYYY/MM/DD')" + " AS " + aliasName + ",";
break;
}
case DateFormat.Hour:
{
tempValue = "DBO.TO_CHAR(" + selectItem + ",'YYYY/MM/DD HH24')" + " AS " + aliasName + ",";
break;
}
case DateFormat.Minute:
{
tempValue = "DBO.TO_CHAR(" + selectItem + ",'YYYY/MM/DD HH24:MI')" + " AS " + aliasName + ",";
break;
}
case DateFormat.Second:
{
tempValue = "DBO.TO_CHAR(" + selectItem + ",'YYYY/MM/DD HH24:MI:SS')" + " AS " + aliasName + ",";
break;
}
}
this.selectItems += tempValue;
}
private string GetInternalSelect()
{
string result;
if (string.IsNullOrEmpty(this.selectItems))
{
result = "*";
}
else
{
result = this.selectItems.Substring(0, this.selectItems.Length - 1);
}
return result;
}
/// <summary>
/// 返回SQL的SELECT部分,如:SELECT *
/// </summary>
/// <returns></returns>
public string GetSelect()
{
string result;
if (string.IsNullOrEmpty(this.selectItems))
{
result = "*";
}
else
{
result = this.selectItems.Substring(0, this.selectItems.Length - 1);
}
return "SELECT " + result;
}
#endregion
#region Where
public void Where(string whereCondition)
{
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, params string[] args)
{
this.whereCondition += string.Format(whereCondition, args) + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue)
{
string tempFieldValue = Convert.ToString(fieldValue);
tempFieldValue = tempFieldValue.Replace("'", "''");
//if (IsOracle)
//{
// whereCondition = string.Format(whereCondition, "TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')");
//}
//else
//{
// //whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')");
// whereCondition = string.Format(whereCondition, "'{0}'");
//}
whereCondition = string.Format(whereCondition, "'{0}'");
whereCondition = string.Format(whereCondition, tempFieldValue);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
//if (IsOracle)
//{
// whereCondition = string.Format(whereCondition, "TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')");
//}
//else
//{
// //whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')");
// whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'");
//}
whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
//if (IsOracle)
//{
// whereCondition = string.Format(whereCondition, "TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')");
//}
//else
//{
// //whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')");
// whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'");
//}
whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3, DateTime fieldValue4)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
string tempFieldValue4 = Convert.ToString(fieldValue4);
tempFieldValue4 = tempFieldValue4.Replace("'", "''");
//if (IsOracle)
//{
// whereCondition = string.Format(whereCondition, "TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')");
//}
//else
//{
// //whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')");
// whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'", "'{3}'");
//}
whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'", "'{3}'");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3, tempFieldValue4);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3, DateTime fieldValue4, DateTime fieldValue5)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
string tempFieldValue4 = Convert.ToString(fieldValue4);
tempFieldValue4 = tempFieldValue4.Replace("'", "''");
string tempFieldValue5 = Convert.ToString(fieldValue5);
tempFieldValue5 = tempFieldValue5.Replace("'", "''");
//if (IsOracle)
//{
// whereCondition = string.Format(whereCondition, "TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')");
//}
//else
//{
// //whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')");
// whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'", "'{3}'", "'{4}'");
//}
whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'", "'{3}'", "'{4}'");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3, tempFieldValue4, tempFieldValue5);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3, DateTime fieldValue4, DateTime fieldValue5, DateTime fieldValue6)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
string tempFieldValue4 = Convert.ToString(fieldValue4);
tempFieldValue4 = tempFieldValue4.Replace("'", "''");
string tempFieldValue5 = Convert.ToString(fieldValue5);
tempFieldValue5 = tempFieldValue5.Replace("'", "''");
string tempFieldValue6 = Convert.ToString(fieldValue6);
tempFieldValue6 = tempFieldValue6.Replace("'", "''");
//if (IsOracle)
//{
// whereCondition = string.Format(whereCondition, "TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')", "TO_DATE('{5}','YYYY/MM/DD HH24:MI:SS')");
//}
//else
//{
// //whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')");
// whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'", "'{3}'", "'{4}'", "'{5}'");
//}
whereCondition = string.Format(whereCondition, "'{0}'", "'{1}'", "'{2}'", "'{3}'", "'{4}'", "'{5}'");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3, tempFieldValue4, tempFieldValue5, tempFieldValue6);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string fieldName, string condition, string fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + "'" + fieldValue + "'" + " AND ";
}
public void Where(string fieldName, string condition, Guid fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + "'" + fieldValue + "'" + " AND ";
}
public void Where(string fieldName, string condition, decimal fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + fieldValue + " AND ";
}
public void Where(string fieldName, string condition, int fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + fieldValue + " AND ";
}
public void Where(string fieldName, string condition, bool fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + "'" + fieldValue + "'" + " AND ";
}
public void Where(string fieldName, string condition, DateTime fieldValue)
{
string tempFieldValue = Convert.ToString(fieldValue);
tempFieldValue = tempFieldValue.Replace("'", "''");
string tempValue = string.Empty;
//if (IsOracle)
//{
// tempValue = fieldName.ToUpper() + condition + "TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')" + " AND ";
//}
//else
//{
// //tempValue = fieldName.ToUpper() + condition + "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')" + " AND ";
// tempValue = fieldName.ToUpper() + condition + "'{0}'" + " AND ";
//}
tempValue = fieldName.ToUpper() + condition + "'{0}'" + " AND ";
tempValue = string.Format(tempValue, tempFieldValue);
this.whereCondition += tempValue;
}
/// <summary>
/// 对字段解密后进行比较
/// </summary>
/// <param name="fieldName"></param>
/// <param name="condition"></param>
/// <param name="fieldValue"></param>
public void WhereSecurity(string fieldName, string condition, string fieldValue)
{
this.whereCondition += "cast(decryptbykey(" + fieldName.ToUpper() + ") AS NVARCHAR(256))" + condition + "'" + fieldValue + "'" + " AND ";
}
/// <summary>
/// 对字段解密后进行比较
/// </summary>
/// <param name="fieldName"></param>
/// <param name="condition"></param>
/// <param name="fieldValue"></param>
public void WhereSecurity(string fieldName, string condition, decimal fieldValue)
{
this.whereCondition += "cast(decryptbykey(" + fieldName.ToUpper() + ") AS NVARCHAR(256))" + condition + fieldValue + " AND ";
}
/// <summary>
/// 对字段解密后进行比较
/// </summary>
/// <param name="fieldName"></param>
/// <param name="condition"></param>
/// <param name="fieldValue"></param>
public void WhereSecurity(string fieldName, string condition, int fieldValue)
{
this.whereCondition += "cast(decryptbykey(" + fieldName.ToUpper() + ") AS NVARCHAR(256))" + condition + fieldValue + " AND ";
}
private string GetInternalWhere()
{
string result;
#region 不初始化默认值
if (IsInitDefaultValue == false)
{
if (string.IsNullOrEmpty(this.whereCondition))
{
if (string.IsNullOrEmpty(companyId))
{
result = "1=1";
}
else
{
result = primaryTableAlias + ".CompanyId='" + companyId + "'";
}
}
else
{
if (string.IsNullOrEmpty(companyId))
{
result = this.whereCondition.Substring(0, this.whereCondition.Length - 5);
}
else
{
result = this.whereCondition + primaryTableAlias + ".CompanyId='" + companyId + "'";
}
}
}
#endregion
#region 初始化默认值
else
{
if (string.IsNullOrEmpty(this.whereCondition))
{
if (string.IsNullOrEmpty(companyId))
{
result = "IsActive='true' AND IsDeleted='false'";
}
else
{
result = primaryTableAlias + ".CompanyId='" + companyId + "' AND " + primaryTableAlias + ".IsActive='true' AND " + primaryTableAlias + ".IsDeleted='false'";
}
}
else
{
if (string.IsNullOrEmpty(companyId))
{
result = this.whereCondition + primaryTableAlias + ".IsActive='true' AND " + primaryTableAlias + ".IsDeleted='false'";
}
else
{
result = this.whereCondition + primaryTableAlias + ".CompanyId='" + companyId + "' AND " + primaryTableAlias + ".IsActive='true' AND " + primaryTableAlias + ".IsDeleted='false'";
}
}
}
#endregion
return result;
}
/// <summary>
/// 返回SQL的WHERE部分,如:IsActive='true'
/// </summary>
/// <returns></returns>
public string GetWhere()
{
string result;
if (string.IsNullOrEmpty(this.whereCondition))
{
result = "1=1";
}
else
{
result = this.whereCondition.Substring(0, this.whereCondition.Length - 5);
}
return result;
}
#endregion
#region 排序
public void OrderBy(string fieldName, string direction)
{
string tempOrderBy = fieldName + " " + direction + ",";
this.orderBy += tempOrderBy;
}
private string GetOrderBy()
{
string result = string.Empty;
if (!string.IsNullOrEmpty(this.orderBy))
{
return " ORDER BY " + this.orderBy.Substring(0, this.orderBy.Length - 1);
}
else
{
return result;
}
}
#endregion
#region 分组
public void GroupBy(string fieldName)
{
this.groupBy += fieldName + ",";
}
private string GetGroupBy()
{
string result = string.Empty;
if (!string.IsNullOrEmpty(this.groupBy))
{
return " GROUP BY " + this.groupBy.Substring(0, this.groupBy.Length - 1);
}
else
{
return result;
}
}
#endregion
#region 返回SQL语句
/// <summary>
/// 返回SQL语句
/// </summary>
/// <returns></returns>
public string GetSql()
{
string result = string.Empty;
result = "SELECT " + GetInternalSelect() + " FROM " + tableNames + " WHERE " + GetInternalWhere() + GetGroupBy() + GetOrderBy();
return result;
}
#endregion
}
public enum DateFormat
{
Year,
Quarter,
/// <summary>
/// YYYY/MM
/// </summary>
Month,
Week,
/// <summary>
/// YYYY/MM/DD
/// </summary>
Day,
/// <summary>
/// YYYY/MM/DD HH24
/// </summary>
Hour,
/// <summary>
/// YYYY/MM/DD HH24:MI
/// </summary>
Minute,
/// <summary>
/// YYYY/MM/DD HH24:MI:SS
/// </summary>
Second
}
}

@ -0,0 +1,472 @@
using EU.Core.UserManager;
using System;
using System.Collections.Generic;
using System.Text;
namespace EU.Core
{
public class DbUpdate
{
#region 变量定义
public string Database { get; set; }
private string sql;
private string whereCondition;
private string sqlTag;
private decimal tag;
public decimal Tag
{
get { return tag; }
set { tag = value; }
}
private bool isInitDefaultValue = true;
/// <summary>
/// 是否初始化默认字段,像:LAST_UPD_BY,LAST_UPD_DATE,LAST_UPD_PROGRAM,TAG,MODIFICATION_NUM等,默认会初始化
/// </summary>
public bool IsInitDefaultValue
{
get
{
return isInitDefaultValue;
}
set { isInitDefaultValue = value; }
}
private string updateProgram = string.Empty;
public string UpdateProgram
{
get { return updateProgram; }
set { updateProgram = value; }
}
#endregion
#region 构造函数
public DbUpdate(string tableName)
{
sql = "UPDATE {0} SET WHERE {1}";
sql = string.Format(sql, tableName.ToUpper(), "1=1");
sqlTag = "SELECT TAG FROM {0} WHERE {1}";
sqlTag = string.Format(sqlTag, tableName.ToUpper(), "1=1");
}
public DbUpdate(string tableName, string condition)
{
sql = "UPDATE {0} SET WHERE {1}";
sql = string.Format(sql, tableName.ToUpper(), condition);
sqlTag = "SELECT TAG FROM {0} WHERE {1}";
sqlTag = string.Format(sqlTag, tableName.ToUpper(), condition);
}
public DbUpdate(string tableName, string fieldName, string fieldValue)
{
sql = "UPDATE {0} SET WHERE {1} = N'{2}'";
sql = string.Format(sql, tableName.ToUpper(), fieldName.ToUpper(), fieldValue);
sqlTag = "SELECT TAG FROM {0} WHERE {1} = N'{2}'";
sqlTag = string.Format(sqlTag, tableName.ToUpper(), fieldName.ToUpper(), fieldValue);
}
public DbUpdate(string tableName, string fieldName, string fieldValue, string updateProgram)
{
sql = "UPDATE {0} SET WHERE {1} = N'{2}'";
sql = string.Format(sql, tableName.ToUpper(), fieldName.ToUpper(), fieldValue);
sqlTag = "SELECT TAG FROM {0} WHERE {1} = N'{2}'";
sqlTag = string.Format(sqlTag, tableName.ToUpper(), fieldName.ToUpper(), fieldValue);
this.updateProgram = updateProgram;
}
#endregion
#region Set
public void Set(string fieldName, int value)
{
inset(fieldName.ToUpper(), Convert.ToString(value));
}
public void Set(string fieldName, decimal value)
{
inset(fieldName.ToUpper(), Convert.ToString(value));
}
public void Set(string fieldName, string value)
{
try
{
//if (value != null)
if (value != null)
{
value = value.Trim();
}
if (!string.IsNullOrEmpty(value))
{
string s = "N'{0}'";
value = value.Replace("'", "''");
s = string.Format(s, value);
inset(fieldName.ToUpper(), s);
}
else
{
inset(fieldName.ToUpper(), null);
}
}
catch (Exception) { throw; }
}
public void Set(string fieldName, Guid? value)
{
try
{
string value1 = value.ToString();
//if (value != null)
if (value1 != null)
{
value1 = value1.Trim();
}
if (!string.IsNullOrEmpty(value1))
{
string s = "N'{0}'";
value1 = value1.Replace("'", "''");
s = string.Format(s, value1);
inset(fieldName.ToUpper(), s);
}
else
{
inset(fieldName.ToUpper(), null);
}
}
catch (Exception)
{
throw;
}
}
public void Set(string fieldName, DateTime value)
{
if (value == DateTime.MinValue) return;
string valTemp = string.Empty;
valTemp = Convert.ToString(value);
valTemp = valTemp.Replace("'", "''");
string s = string.Empty;
s = "CAST('{0}' AS DATETIME)";
s = string.Format(s, valTemp);
inset(fieldName.ToUpper(), s);
}
public void Set(string fieldName, DateTime? value)
{
if (value == null) return;
string valTemp = string.Empty;
valTemp = Convert.ToString(value);
valTemp = valTemp.Replace("'", "''");
string s = string.Empty;
s = "CAST('{0}' AS DATETIME)";
s = string.Format(s, valTemp);
inset(fieldName.ToUpper(), s);
}
/// <summary>
/// 设置计算类型的更新,如SetCompute("TAG","TAG+1")
/// </summary>
/// <param name="fieldName"></param>
/// <param name="val"></param>
public void SetCompute(string fieldName, string value)
{
try
{
if (value != null)
{
value = value.Trim();
}
inset(fieldName.ToUpper(), value);
}
catch (Exception)
{
throw;
}
}
#region 加密更新
/// <summary>
/// 加密保存
/// </summary>
/// <param name="fieldName"></param>
/// <param name="value"></param>
public void SetAsSecurity(string fieldName, string value)
{
if (string.IsNullOrEmpty(value))
{
Set(fieldName, value);
}
else
{
string temp = "encryptbykey(key_guid('fookey'),N'" + value + "')";
inset(fieldName.ToUpper(), temp);
}
}
/// <summary>
/// 加密保存
/// </summary>
/// <param name="fieldName"></param>
/// <param name="value"></param>
public void SetAsSecurity(string fieldName, int value)
{
SetAsSecurity(fieldName, Convert.ToString(value));
}
/// <summary>
/// 加密保存
/// </summary>
/// <param name="fieldName"></param>
/// <param name="value"></param>
public void SetAsSecurity(string fieldName, decimal value)
{
SetAsSecurity(fieldName, Convert.ToString(value));
}
#endregion
#endregion
#region Where
public void Where(string whereCondition)
{
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, params string[] args)
{
this.whereCondition += string.Format(whereCondition, args) + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue)
{
string tempFieldValue = Convert.ToString(fieldValue);
tempFieldValue = tempFieldValue.Replace("'", "''");
whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')");
whereCondition = string.Format(whereCondition, tempFieldValue);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3, DateTime fieldValue4)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
string tempFieldValue4 = Convert.ToString(fieldValue4);
tempFieldValue4 = tempFieldValue4.Replace("'", "''");
whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3, tempFieldValue4);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3, DateTime fieldValue4, DateTime fieldValue5)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
string tempFieldValue4 = Convert.ToString(fieldValue4);
tempFieldValue4 = tempFieldValue4.Replace("'", "''");
string tempFieldValue5 = Convert.ToString(fieldValue5);
tempFieldValue5 = tempFieldValue5.Replace("'", "''");
whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3, tempFieldValue4, tempFieldValue5);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string whereCondition, DateTime fieldValue1, DateTime fieldValue2, DateTime fieldValue3, DateTime fieldValue4, DateTime fieldValue5, DateTime fieldValue6)
{
string tempFieldValue1 = Convert.ToString(fieldValue1);
tempFieldValue1 = tempFieldValue1.Replace("'", "''");
string tempFieldValue2 = Convert.ToString(fieldValue2);
tempFieldValue2 = tempFieldValue2.Replace("'", "''");
string tempFieldValue3 = Convert.ToString(fieldValue3);
tempFieldValue3 = tempFieldValue3.Replace("'", "''");
string tempFieldValue4 = Convert.ToString(fieldValue4);
tempFieldValue4 = tempFieldValue4.Replace("'", "''");
string tempFieldValue5 = Convert.ToString(fieldValue5);
tempFieldValue5 = tempFieldValue5.Replace("'", "''");
string tempFieldValue6 = Convert.ToString(fieldValue6);
tempFieldValue6 = tempFieldValue6.Replace("'", "''");
whereCondition = string.Format(whereCondition, "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{1}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{2}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{3}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')", "DBO.TO_DATE('{4}','YYYY/MM/DD HH24:MI:SS')");
whereCondition = string.Format(whereCondition, tempFieldValue1, tempFieldValue2, tempFieldValue3, tempFieldValue4, tempFieldValue5, tempFieldValue6);
this.whereCondition += whereCondition + " AND ";
}
public void Where(string fieldName, string condition, string fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + "'" + fieldValue + "'" + " AND ";
}
public void Where(string fieldName, string condition, Guid? fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + "'" + fieldValue + "'" + " AND ";
}
public void Where(string fieldName, string condition, Guid fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + "'" + fieldValue + "'" + " AND ";
}
public void Where(string fieldName, string condition, decimal fieldValue)
{
this.whereCondition += fieldName.ToUpper() + condition + fieldValue + " AND ";
}
public void Where(string fieldName, string condition, DateTime fieldValue)
{
string tempFieldValue = Convert.ToString(fieldValue);
tempFieldValue = tempFieldValue.Replace("'", "''");
string tempValue = string.Empty;
tempValue = fieldName.ToUpper() + condition + "DBO.TO_DATE('{0}','YYYY/MM/DD HH24:MI:SS')" + " AND ";
tempValue = string.Format(tempValue, tempFieldValue);
this.whereCondition += tempValue;
}
/// <summary>
/// 对字段解密后进行比较
/// </summary>
/// <param name="fieldName"></param>
/// <param name="condition"></param>
/// <param name="fieldValue"></param>
public void WhereSecurity(string fieldName, string condition, string fieldValue)
{
this.whereCondition += "cast(decryptbykey(" + fieldName.ToUpper() + ") AS NVARCHAR(256))" + condition + "'" + fieldValue + "'" + " AND ";
}
/// <summary>
/// 对字段解密后进行比较
/// </summary>
/// <param name="fieldName"></param>
/// <param name="condition"></param>
/// <param name="fieldValue"></param>
public void WhereSecurity(string fieldName, string condition, decimal fieldValue)
{
this.whereCondition += "cast(decryptbykey(" + fieldName.ToUpper() + ") AS NVARCHAR(256))" + condition + fieldValue + " AND ";
}
/// <summary>
/// 对字段解密后进行比较
/// </summary>
/// <param name="fieldName"></param>
/// <param name="condition"></param>
/// <param name="fieldValue"></param>
public void WhereSecurity(string fieldName, string condition, int fieldValue)
{
this.whereCondition += "cast(decryptbykey(" + fieldName.ToUpper() + ") AS NVARCHAR(256))" + condition + fieldValue + " AND ";
}
#endregion
#region 公有函数
/// <summary>
/// 返回SQL语句的WHERE部分,如:DELETE_FLAG='N'
/// </summary>
/// <returns></returns>
public string GetWhere()
{
string result;
if (string.IsNullOrEmpty(this.whereCondition))
{
result = "1=1";
}
else
{
result = this.whereCondition.Substring(0, this.whereCondition.Length - 5);
}
return result;
}
/// <summary>
/// 获取完整SQL语句
/// </summary>
/// <returns></returns>
public string GetSql()
{
if (isInitDefaultValue == true)
{
InitDefaultValues();
}
return sql + " AND " + GetWhere();
}
#endregion
#region Private Method
private void inset(string fieldName, string value)
{
sql = sql.Replace("{", "{{");
sql = sql.Replace("}", "}}");
int n = sql.IndexOf("SET WHERE");
if (value == null)
{
if (n == -1)
{
n = sql.LastIndexOf(" WHERE");
sql = sql.Insert(n, ", {0} = NULL ");
}
else
{
n = sql.LastIndexOf(" WHERE");
sql = sql.Insert(n, " {0} = NULL ");
}
sql = string.Format(sql, fieldName.ToUpper());
}
else
{
if (n == -1)
{
n = sql.IndexOf(" WHERE");
sql = sql.Insert(n, ", {0} = {1} ");
}
else // first time
{
n = sql.IndexOf(" WHERE");
sql = sql.Insert(n, " {0} = {1} ");
}
sql = string.Format(sql, fieldName.ToUpper(), value);
}
}
/// <summary>
/// 初始化Update语句默认需要更新的值
/// </summary>
private void InitDefaultValues()
{
string tempSql = sql.ToUpper();
//try
//{
// if (UserContext.Current != null)
// {
// lastUpdBy = UserContext.Current.User_Id;
// }
//}
//catch { }
//if (tempSql.IndexOf("[LAST_UPD_BY]") == -1)
//{
// Set("LAST_UPD_BY", lastUpdBy);
//}
Guid? lastUpdBy = UserContext.Current.User_Id;
if (lastUpdBy != Guid.Empty)
Set("UpdateBy", lastUpdBy);
if (tempSql.IndexOf("[LAST_UPD_DATE]") == -1)
{
Set("UpdateTime", DateTime.Now);
}
//if (tempSql.IndexOf("[LAST_UPD_PROGRAM]") == -1)
//{
// Set("LAST_UPD_PROGRAM", updateProgram);
//}
}
#endregion
}
}

@ -20,6 +20,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Entity\AttributeManager\" />
<Folder Include="Models\RootTkey\Interface\" />
</ItemGroup>

Loading…
Cancel
Save