数据库操作通用方法类
public class DbMethods { /// <summary> /// 获取数据库 /// </summary>zlf 2014-12-11 /// <param name="dbCode">用户:u 项目:p 捐赠:d 公共:c 活动:a 日志:l</param> public static Database GetDb(string dbCode) { Database db = null; switch (dbCode) { case "a": db = Db.ActivityDb; break; case "c": db = Db.CommonDb; break; case "d": db = Db.DonationDb; break; case "p": db = Db.ProjectsDb; break; case "u": db = Db.UsersDb; break; case "l": db = Db.LogDb; break; default: break; } return db; } /// <summary> /// 验证sql匹配条件是否正确(若以and开头则自动去除) /// </summary>zlf 2014-12-10 /// <param name="where">sql匹配条件</param> public static string CheckWhere(string where) { string str = where.TrimStart();//去除前置空格 if (str.ToLower().IndexOf("and ") == 0)//若以and开头则自动去除第一个and { where = str.Substring(4);//若要保留前面一个空格,可以改为3 } return where; } /// <summary> /// 根据条件获取指定表中指定列的值 /// </summary>zlf 2014-12-10 /// <param name="useDb">数据库 用户:u 项目:p 捐赠:d 公共:c 活动:a</param> /// <param name="ColumnCode">列编码</param> /// <param name="tbName">数据表名</param> /// <param name="strWhere">匹配条件</param> /// <returns>满足条件的第一行的值</returns> public static string GetColumnValue(string useDb, string ColumnCode, string tbName, string strWhere) { string value = String.Empty; if (String.IsNullOrEmpty(ColumnCode) || String.IsNullOrEmpty(tbName)) { return value; } StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 " + ColumnCode + " from " + tbName); strWhere = CheckWhere(strWhere); if (!String.IsNullOrEmpty(strWhere)) { strSql.Append(" where " + strWhere); } try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { //ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行 object obj = db.ExecuteScalar(CommandType.Text, strSql.ToString()); if (obj != null) value = obj.ToString(); } } catch //(Exception ex) { } return value; } /// <summary> /// 根据条件获取数据集 /// </summary>zlf 2014-12-11 /// <param name="useDb">数据库 用户:u 项目:p 捐赠:d 公共:c 活动:a</param> /// <param name="fileds">列集合</param> /// <param name="tbName">数据表名</param> /// <param name="strWhere">匹配条件</param> /// <returns>满足条件的数据集</returns> public static DataSet GetList(string useDb, string fileds, string tbName, string strWhere) { DataSet ds = null; if (String.IsNullOrEmpty(fileds) || String.IsNullOrEmpty(tbName)) { return ds; } StringBuilder strSql = new StringBuilder(); strSql.Append("select " + fileds + " from " + tbName); strWhere = CheckWhere(strWhere); if (!String.IsNullOrEmpty(strWhere)) { strSql.Append(" where " + strWhere); } try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { ds = db.ExecuteDataSet(CommandType.Text, strSql.ToString()); } } catch //(Exception ex) { } return ds; } /// <summary> /// 根据条件获取数据集 /// </summary>zlf 2014-12-12 /// <param name="useDb">数据库 GetDb()</param> /// <param name="fileds">列集合</param> /// <param name="tbName">数据表名</param> /// <param name="strWhere">匹配条件</param> /// <returns>满足条件的数据集</returns> /// <param name="orderby">排序字段 如:addtime desc</param> /// <param name="pageIndex">当前页号</param> /// <param name="pageSize">每页数据量</param> public static DataSet GetListByPage(string useDb, string fileds, string tbName, string strWhere, string orderby, int pageSize, int pageIndex) { DataSet ds = null; if (String.IsNullOrEmpty(fileds) || String.IsNullOrEmpty(tbName) || String.IsNullOrEmpty(orderby)) { return ds; } if (pageSize < 1) pageSize = 10; if (pageIndex < 1) pageIndex = 1; int start = (pageIndex - 1) * pageSize + 1; int end = pageIndex * pageSize; StringBuilder strSql = new StringBuilder(); strSql.Append("select * from ("); strSql.Append("select ROW_NUMBER() OVER (ORDER BY " + orderby + ") as row," + fileds + " from " + tbName); strWhere = CheckWhere(strWhere); if (!String.IsNullOrEmpty(strWhere)) { strSql.Append(" where " + strWhere); } strSql.Append(") as T where T.row between " + start + " and " + end); try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { ds = db.ExecuteDataSet(CommandType.Text, strSql.ToString()); } } catch //(Exception ex) { } return ds; } /// <summary> /// 根据条件获取指定表中记录总数 /// </summary>zlf 2014-12-11 /// <param name="useDb">数据库 用户:u 项目:p 捐赠:d 公共:c 活动:a</param> /// <param name="tbName">数据表名</param> /// <param name="strWhere">匹配条件</param> /// <returns>满足条件的记录总数</returns> public static int GetRecordCount(string useDb, string tbName, string strWhere) { int value = 0; if (String.IsNullOrEmpty(tbName)) { return value; } StringBuilder strSql = new StringBuilder(); strSql.Append("select count(1) from " + tbName); strWhere = CheckWhere(strWhere); if (!String.IsNullOrEmpty(strWhere)) { strSql.Append(" where " + strWhere); } try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { //ExecuteScalar执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行 object obj = db.ExecuteScalar(CommandType.Text, strSql.ToString()); if (obj != null) value = Convert.ToInt32(obj); } } catch //(Exception ex) { } return value; } /// <summary> /// 更新指定数据库指定表中信息 /// </summary>zlf 2014-12-10 /// <param name="useDb">数据库 用户:u 项目:p 捐赠:d 公共:c 活动:a</param> /// <param name="ColAndVal">列+值(col = ‘val‘,col2=‘val2‘)</param> /// <param name="tbName">数据表名</param> /// <param name="strWhere">匹配条件</param> /// <returns>是否更新成功</returns> public static bool SetValue(string useDb, string ColAndVal, string tbName, string strWhere) { bool value = false; if (String.IsNullOrEmpty(ColAndVal) || String.IsNullOrEmpty(tbName)) { return false; } StringBuilder strSql = new StringBuilder(); strSql.Append("update " + tbName + " set "); strSql.Append(ColAndVal); strWhere = CheckWhere(strWhere); if (!String.IsNullOrEmpty(strWhere)) { strSql.Append(" where " + strWhere); } try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { int rows = db.ExecuteNonQuery(CommandType.Text, strSql.ToString()); return rows > 0; } } catch //(Exception ex) { } return value; } /// <summary> /// 对指定数据表中批量插入记录(不支持html数据) /// </summary>zlf 2014-12-24 /// <param name="useDb">数据库 用户:u 项目:p 捐赠:d 公共:c 活动:a</param> /// <param name="tbName">数据表名</param> /// <param name="fields">字段集合 如:col1,col2,...</param> /// <param name="values">值集合(值中不能包含",") 如:‘val1‘,‘val2‘,...</param> public static bool InsertRecord(string useDb, string tbName, string fields, List<string> values) { bool value = false; if (String.IsNullOrEmpty(tbName) || String.IsNullOrEmpty(fields) || values.Count < 1) { return false; } int colLength = fields.Split(‘,‘).Length; StringBuilder strSql = new StringBuilder(); strSql.Append("insert into " + tbName + "(" + fields + ") "); bool equalLength = false;//字段长度是否与值长度是否相同 for (int i = 0; i < values.Count; i++) { if (values[i].Split(‘,‘).Length == colLength) { equalLength = true; if (i == 0) { strSql.Append(" select " + values[i]); } else { strSql.Append(" union all "); strSql.Append(" select " + values[i]); } } } if (equalLength) { try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { int rows = db.ExecuteNonQuery(CommandType.Text, strSql.ToString()); return rows > 0; } } catch { } } return value; } /// <summary> /// 添加一条记录(不支持html数据) /// </summary>zlf 2015-01-13 /// <typeparam name="T">实体类</typeparam> /// <param name="useDb">数据库 用户:u 项目:p 捐赠:d 公共:c 活动:a</param> /// <param name="tbName">数据表名</param> /// <param name="info">数据实体</param> public static bool AddRecord<T>(string useDb, string tbName, T info) where T : class { bool result = false; if (String.IsNullOrEmpty(tbName) || info == null) { return false; } var type = typeof(T); var fields = type.GetProperties(); StringBuilder sb = new StringBuilder(); sb.Append("insert into " + tbName + "({0}) values ({1})"); var columns = String.Empty; var values = String.Empty; foreach (var p in fields) { var v = p.GetValue(info, null); if (v == null) continue; if (String.IsNullOrEmpty(columns)) { columns += p.Name; values += "‘" + v.ToString().Replace("‘", "") + "‘"; } else { columns += "," + p.Name; values += ",‘" + v.ToString().Replace("‘", "") + "‘"; } } if (!String.IsNullOrEmpty(columns)) { var sql = string.Format(sb.ToString(), columns, values); try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { int rows = db.ExecuteNonQuery(CommandType.Text, sql); return rows > 0; } } catch { } } return result; } /// <summary> /// 获取对象实体 /// </summary>zlf 2015-02-03 /// <typeparam name="T">实体类</typeparam> /// <param name="useDb">数据库</param> /// <param name="tbName">数据表名</param> /// <param name="strWhere">匹配条件</param> /// <returns>数据实体</returns> public static T GetModel<T>(string useDb, string tbName, string strWhere) where T : class { T val = null; if (!String.IsNullOrEmpty(tbName)) { StringBuilder strSql = new StringBuilder(); strSql.Append("select top 1 * from " + tbName); strWhere = CheckWhere(strWhere); if (!String.IsNullOrEmpty(strWhere)) { strSql.Append(" where " + strWhere); } try { Microsoft.Practices.EnterpriseLibrary.Data.Database db = GetDb(useDb); if (db != null) { using (IDataReader dataReader = db.ExecuteReader(CommandType.Text, strSql.ToString())) { dataReader.Read(); var type = typeof(T); var fields = type.GetProperties();//实体属性集合 var columns = new List<string>();//数据列集合 for (int i = 0; i < dataReader.FieldCount; i++) { columns.Add(dataReader.GetName(i)); } foreach (var p in fields) { //为实体赋值 if (columns.Contains(p.Name)) { var ovalue = dataReader[p.Name]; if (ovalue == null) continue; p.SetValue(val, ovalue, null); continue; } } } } } catch //(Exception ex) { } } return val; } }
数据库配置:
/// <summary>
/// 数据库集
/// </summary>
public class Db
{
/// <summary>
/// 用户中心数据库
/// </summary>
public static Database UsersDb
{
get { return EnterpriseLibraryContainer.Current.GetInstance<Database>("UsersDb"); }
}
}
配置文件节点:
<connectionStrings>
<add name="UsersDb" connectionString="Database=Hope_Users_db;Server=HOPE8;Uid=sa;Pwd=sql2008;" providerName="System.Data.SqlClient" />
</connectionStrings>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。