You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
3.3 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WeighBusiness.Utils.SqlUtils
{
public class UpdateUtil
{
/// <summary>
/// 更新
/// </summary>
/// <param name="table">表</param>
/// <param name="keyColumn">条件的列名</param>
/// <param name="keyColumnValue">条件的值</param>
/// <param name="fieldAndValuePairs">更新的字段及其值。因此必须是偶数对</param>
/// <returns>更新失败返回false,否则返回true</returns>
public static bool Update(string table, string keyColumn, string keyColumnValue, params string[] fieldAndValuePairs)
{
string updateStr = GetUpdateString(table, keyColumn, keyColumnValue, fieldAndValuePairs);
if (string.IsNullOrEmpty(updateStr))
return true;
return SqlHelperEx.DoExecuteNonQuery(updateStr);
}
/// <summary>
/// 获取更新的sql语句(以换行结尾)
/// <para>如果没有更新的字段和值,则返回string.Empty</para>
/// </summary>
/// <param name="table">表</param>
/// <param name="keyColumn">条件的列名</param>
/// <param name="keyColumnValue">条件的值</param>
/// <param name="fieldAndValuePairs">更新的字段及其值。因此必须是偶数对</param>
public static string GetUpdateString(string table, string keyColumn, string keyColumnValue, params string[] fieldAndValuePairs)
{
string updateStr = string.Empty;
if (fieldAndValuePairs == null || fieldAndValuePairs.Length == 0)
return updateStr;
if (fieldAndValuePairs.Length % 2 == 1)
throw new ArgumentException("fieldAndValuePairs参数必须为偶数个:分别对应字段及其值");
string begin = "update " + table + " set ";
string end = string.Format(" where " + keyColumn + @" = '{0}'
", keyColumnValue);
for (int i = 0; i < fieldAndValuePairs.Length; i++) {
string field = fieldAndValuePairs[i];
i++;
string value = fieldAndValuePairs[i];
updateStr += field + "='" + value + "',";
}
updateStr = updateStr.Substring(0, updateStr.Length - 1);
updateStr = begin + updateStr + end;
return updateStr;
}
/// <summary>
/// 获取更新的sql语句.
/// <para>如果没有更新的字段和值,则返回string.Empty</para>
/// </summary>
/// <param name="table">表</param>
/// <param name="keyColumn">条件的列名</param>
/// <param name="keyColumnValue">条件的值</param>
/// <param name="fieldAndValuePairs">更新的字段及其值</param>
/// <returns></returns>
public static string GetUpdateString(string table, string keyColumn, string keyColumnValue, Dictionary<string, string> fieldAndValuePairs)
{
string updateStr = string.Empty;
if (fieldAndValuePairs == null || fieldAndValuePairs.Count == 0)
return updateStr;
string begin = "update " + table + " set ";
string end = string.Format(" where " + keyColumn + @" = '{0}'", keyColumnValue);
//for (int i = 0; i < fieldAndValuePairs.Count; i++) {
// string field = fieldAndValuePairs[i];
// i++;
// string value = fieldAndValuePairs[i];
// updateStr += field + "='" + value + "',";
//}
foreach (var item in fieldAndValuePairs) {
updateStr += item.Key + "='" + item.Value + "',";
}
updateStr = updateStr.Substring(0, updateStr.Length - 1);
updateStr = begin + updateStr + end;
return updateStr;
}
}
}