ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(5)之业务层

news/2024/5/20 4:03:01/文章来源:https://blog.csdn.net/weixin_30443747/article/details/99507364

    业务层主要负责定义业务逻辑(规则、工作流、数据完整性等),接收来自表示层的数据请求,逻辑判断后,向数据访问层提交请求,并传递数据访问结果,业务逻辑层实际上是一个中间件,起着承上启下的重要作用。

    在我们的项目中,所有的数据库语句和和逻辑判断尽量写在业务层(IA.Business)里面,这样既能规范层级的作用,同时也规范团队协作的标准,我们在业务层中的类都以实体类名称加上Bll来命名(如:Base_SysLogBll.cs)。

 首先,我们需要创建业务类IA.Business:

15.png

创建好之后,我们需要引入Bobo.DataAccess.dll和Bobo.Repository.dll、Bobo.Utilities.dll程序集,以及IA.Entity实体。

然后我们需要根据实体类,创建对应的Bll业务类,如:

using Bobo.Repository;
using IA.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace IA.Business
{// <summary> /// 文章信息表 /// <author> ///     <name>YHB</name> ///      <date>2018.10.18</date> /// </author> /// </summary> public class Com_ArticleBll : RepositoryFactory<Com_Article>{}
}

  

  这样我们依次把我们需要用的业务类建好,并通过业务仓储工厂继承IRepository接口(: RepositoryFactory<Com_Article>)   我们可以为不同的业务类创建不同的文件夹存放,比如系统的基础业务类,如Base_SysLogBll.cs、Base_DataDictionaryDetailBll.cs、Base_ProvinceCityBll.cs、Base_UserBll.cs等,我们把他放在SystemBusiness文件夹下,这样可以跟常规业务类划分开来。

    下面,我们重点列出这几个业务类文件的方法内容,这些方法内容都是一般常规系统会用到的,其他一些特殊或者将会用到的,会在后续边用的过程中,在写入进去,包括其他常规的业务类。

(1)Base_SysLogBll

using Bobo.DataAccess;
using Bobo.DataAccess.DataBase;
using Bobo.Repository;
using Bobo.Utilities;
using Bobo.Utilities.Membership;
using IA.Entity;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;namespace IA.Business.SystemBusiness
{/// <summary>/// 系统日志表/// <author>///     <name>YHB</name>///     <date>2018.08.18</date>/// </author>/// </summary>public class Base_SysLogBll : RepositoryFactory<Base_SysLog>{#region 静态实例化private static Base_SysLogBll item;public static Base_SysLogBll Instance{get{if (item == null){item = new Base_SysLogBll();}return item;}}#endregionpublic Base_SysLog SysLog = new Base_SysLog();#region 写入操作日志/// <summary>/// 写入作业日志/// </summary>/// <param name="ObjectId">对象主键</param>/// <param name="OperationType">操作类型</param>/// <param name="State">状态</param>/// <param name="Remark">操作说明</param>/// <returns></returns>public void WriteLog(string ObjectId, OperationType OperationType, string State, string Remark = ""){SysLog.SysLogId = CommonHelper.GetGuid();SysLog.ObjectId = ObjectId;SysLog.LogType = CommonHelper.GetString((int)OperationType);if (ManageProvider.Provider.IsOverdue()){SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress;SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName;SysLog.CompanyId = ManageProvider.Provider.Current().CompanyId;SysLog.DepartmentId = ManageProvider.Provider.Current().DepartmentId;SysLog.CreateUserId = ManageProvider.Provider.Current().UserId;SysLog.CreateUserName = ManageProvider.Provider.Current().UserName;}SysLog.ModuleId = DESEncrypt.Decrypt(CookieHelper.GetCookie("ModuleId"));SysLog.Remark = Remark;SysLog.Status = State;ThreadPool.QueueUserWorkItem(new WaitCallback(WriteLogUsu), SysLog);//放入异步执行}private void WriteLogUsu(object obSysLog){Base_SysLog VSysLog = (Base_SysLog)obSysLog;DataFactory.Database().Insert(VSysLog);}/// <summary>/// 写入作业日志(新增操作)/// </summary>/// <param name="entity">实体对象</param>/// <param name="OperationType">操作类型</param>/// <param name="State">状态</param>/// <param name="Remark">操作说明</param>/// <returns></returns>public void WriteLog<T>(T entity, OperationType OperationType, string State, string Remark = ""){IDatabase database = DataFactory.Database();DbTransaction isOpenTrans = database.BeginTrans();try{SysLog.SysLogId = CommonHelper.GetGuid();SysLog.ObjectId = DatabaseCommon.GetKeyFieldValue(entity).ToString();SysLog.LogType = CommonHelper.GetString((int)OperationType);SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress;SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName;SysLog.CompanyId = ManageProvider.Provider.Current().CompanyId;SysLog.DepartmentId = ManageProvider.Provider.Current().DepartmentId;SysLog.CreateUserId = ManageProvider.Provider.Current().UserId;SysLog.CreateUserName = ManageProvider.Provider.Current().UserName;SysLog.ModuleId = DESEncrypt.Decrypt(CookieHelper.GetCookie("ModuleId"));if (Remark == ""){SysLog.Remark = DatabaseCommon.GetClassName<T>();}SysLog.Remark = Remark;SysLog.Status = State;database.Insert(SysLog, isOpenTrans);//添加日志详细信息Type objTye = typeof(T);foreach (PropertyInfo pi in objTye.GetProperties()){object value = pi.GetValue(entity, null);if (value != null && value.ToString() != " " && value.ToString() != ""){Base_SysLogDetail syslogdetail = new Base_SysLogDetail();syslogdetail.SysLogDetailId = CommonHelper.GetGuid();//syslogdetail.SysLogId = SysLog.SysLogId;syslogdetail.PropertyField = pi.Name;syslogdetail.PropertyName = DatabaseCommon.GetFieldText(pi);syslogdetail.NewValue = "" + value + "";database.Insert(syslogdetail, isOpenTrans);}}database.Commit();}catch{database.Rollback();}}/// <summary>/// 写入作业日志(更新操作)/// </summary>/// <param name="oldObj">旧实体对象</param>/// <param name="newObj">新实体对象</param>/// <param name="OperationType">操作类型</param>/// <param name="State">状态</param>/// <param name="Remark">操作说明</param>/// <returns></returns>public void WriteLog<T>(T oldObj, T newObj, OperationType OperationType, string State, string Remark = ""){IDatabase database = DataFactory.Database();DbTransaction isOpenTrans = database.BeginTrans();try{SysLog.SysLogId = CommonHelper.GetGuid();SysLog.ObjectId = DatabaseCommon.GetKeyFieldValue(newObj).ToString();SysLog.LogType = CommonHelper.GetString((int)OperationType);SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress;SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName;SysLog.CompanyId = ManageProvider.Provider.Current().CompanyId;SysLog.DepartmentId = ManageProvider.Provider.Current().DepartmentId;SysLog.CreateUserId = ManageProvider.Provider.Current().UserId;SysLog.CreateUserName = ManageProvider.Provider.Current().UserName;SysLog.ModuleId = DESEncrypt.Decrypt(CookieHelper.GetCookie("ModuleId"));if (Remark == ""){SysLog.Remark = DatabaseCommon.GetClassName<T>();}SysLog.Remark = Remark;SysLog.Status = State;database.Insert(SysLog, isOpenTrans);//添加日志详细信息Type objTye = typeof(T);foreach (PropertyInfo pi in objTye.GetProperties()){object oldVal = pi.GetValue(oldObj, null);object newVal = pi.GetValue(newObj, null);if (!Equals(oldVal, newVal)){if (oldVal != null && oldVal.ToString() != " " && oldVal.ToString() != "" && newVal != null && newVal.ToString() != " " && newVal.ToString() != ""){Base_SysLogDetail syslogdetail = new Base_SysLogDetail();syslogdetail.SysLogDetailId = CommonHelper.GetGuid();//syslogdetail.SysLogId = SysLog.SysLogId;syslogdetail.PropertyField = pi.Name;syslogdetail.PropertyName = DatabaseCommon.GetFieldText(pi);syslogdetail.NewValue = "" + newVal + "";syslogdetail.OldValue = "" + oldVal + "";database.Insert(syslogdetail, isOpenTrans);}}}database.Commit();}catch{database.Rollback();}}/// <summary>/// 写入作业日志(删除操作)/// </summary>/// <param name="oldObj">旧实体对象</param>/// <param name="KeyValue">对象主键</param>/// <param name="State">状态</param>/// <param name="Remark">操作说明</param>public void WriteLog<T>(string[] KeyValue, string State, string Remark = "") where T : new(){IDatabase database = DataFactory.Database();DbTransaction isOpenTrans = database.BeginTrans();try{foreach (var item in KeyValue){T Oldentity = database.FindEntity<T>(item.ToString());SysLog.SysLogId = CommonHelper.GetGuid();SysLog.ObjectId = item;SysLog.LogType = CommonHelper.GetString((int)OperationType.Delete);SysLog.IPAddress = ManageProvider.Provider.Current().IPAddress;SysLog.IPAddressName = ManageProvider.Provider.Current().IPAddressName;SysLog.CompanyId = ManageProvider.Provider.Current().CompanyId;SysLog.DepartmentId = ManageProvider.Provider.Current().DepartmentId;SysLog.CreateUserId = ManageProvider.Provider.Current().UserId;SysLog.CreateUserName = ManageProvider.Provider.Current().UserName;SysLog.ModuleId = DESEncrypt.Decrypt(CookieHelper.GetCookie("ModuleId"));if (Remark == ""){SysLog.Remark = DatabaseCommon.GetClassName<T>();}SysLog.Remark = Remark;SysLog.Status = State;database.Insert(SysLog, isOpenTrans);//添加日志详细信息Type objTye = typeof(T);foreach (PropertyInfo pi in objTye.GetProperties()){object value = pi.GetValue(Oldentity, null);if (value != null && value.ToString() != " " && value.ToString() != ""){Base_SysLogDetail syslogdetail = new Base_SysLogDetail();syslogdetail.SysLogDetailId = CommonHelper.GetGuid();//syslogdetail.SysLogId = SysLog.SysLogId;syslogdetail.PropertyField = pi.Name;syslogdetail.PropertyName = DatabaseCommon.GetFieldText(pi);syslogdetail.NewValue = "" + value + "";database.Insert(syslogdetail, isOpenTrans);}}}database.Commit();}catch{database.Rollback();}}#endregion/// <summary>/// 清空操作日志/// </summary>/// <param name="CreateDate"></param>/// <returns></returns>public int RemoveLog(string KeepTime){StringBuilder strSql = new StringBuilder();DateTime CreateDate = DateTime.Now;if (KeepTime == "7")//保留近一周{CreateDate = DateTime.Now.AddDays(-7);}else if (KeepTime == "1")//保留近一个月{CreateDate = DateTime.Now.AddMonths(-1);}else if (KeepTime == "3")//保留近三个月{CreateDate = DateTime.Now.AddMonths(-3);}if (KeepTime == "0")//不保留,全部删除{strSql.Append("DELETE FROM Base_SysLog");return DataFactory.Database().ExecuteBySql(strSql);}else{strSql.Append("DELETE FROM Base_SysLog WHERE 1=1 ");strSql.Append("AND CreateDate <= @CreateDate");List<DbParameter> parameter = new List<DbParameter>();parameter.Add(DbFactory.CreateDbParameter("@CreateDate", CreateDate));return DataFactory.Database().ExecuteBySql(strSql, parameter.ToArray());}}/// <summary>/// 获取系统日志列表/// </summary>/// <param name="ModuleId">模块ID</param>/// <param name="ParameterJson">搜索条件</param>/// <param name="jqgridparam">分页条件</param>/// <returns></returns>public List<Base_SysLog> GetPageList(string ModuleId, string ParameterJson, ref JqGridParam jqgridparam){StringBuilder strSql = new StringBuilder();List<DbParameter> parameter = new List<DbParameter>();strSql.Append(@"SELECT  *FROM    ( SELECT    l.SysLogId ,l.ObjectId ,l.LogType ,l.IPAddress ,l.IPAddressName ,l.CreateDate ,l.CreateUserId ,l.CreateUserName ,l.ModuleId AS Module,m.FullName AS ModuleId ,l.Remark ,l.StateFROM      Base_SysLog lLEFT JOIN Base_Module m ON m.ModuleId = l.ModuleId) A WHERE 1 = 1");//strSql.Append(WhereSql);if (!string.IsNullOrEmpty(ModuleId)){strSql.Append(" AND Module = @ModuleId");parameter.Add(DbFactory.CreateDbParameter("@ModuleId", ModuleId));}return Repository().FindListPageBySql(strSql.ToString(), parameter.ToArray(), ref jqgridparam);}/// <summary>/// 获取系统日志明细列表/// </summary>/// <param name="SysLogId">系统日志主键</param>/// <returns></returns>public List<Base_SysLogDetail> GetSysLogDetailList(string SysLogId){string WhereSql = " AND SysLogId = @SysLogId Order By CreateDate ASC";List<DbParameter> parameter = new List<DbParameter>();parameter.Add(DbFactory.CreateDbParameter("@SysLogId", SysLogId));return DataFactory.Database().FindList<Base_SysLogDetail>(WhereSql, parameter.ToArray());}}/// <summary>/// 操作类型/// </summary>public enum OperationType{/// <summary>/// 登陆/// </summary>Login = 0,/// <summary>/// 新增/// </summary>Add = 1,/// <summary>/// 修改/// </summary>Update = 2,/// <summary>/// 删除/// </summary>Delete = 3,/// <summary>/// 其他/// </summary>Other = 4,/// <summary>/// 访问/// </summary>Visit = 5,/// <summary>/// 离开/// </summary>Leave = 6,/// <summary>/// 查询/// </summary>Query = 7,/// <summary>/// 安全退出/// </summary>Exit = 8,}
}

  

(2)Base_DataDictionaryDetailBll

using Bobo.DataAccess;
using Bobo.Repository;
using Bobo.Utilities;
using IA.Entity;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace IA.Business.SystemBusiness
{// <summary> /// 数据字典表 /// <author> ///     <name>YHB</name> ///      <date>2018.10.18</date> /// </author> /// </summary> public class Base_DataDictionaryDetailBll : RepositoryFactory<Base_DataDictionaryDetail>{/// <summary>/// 根据字典类型和编码获取字典详细/// </summary>/// <param name="DataDictionaryType"></param>/// <param name="Code"></param>/// <returns></returns>public List<Base_DataDictionaryDetail> GetDataducListByTypeCode(string DataDictionaryType, string Code){StringBuilder Sql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();Sql.Append(@"SELECT * FROM Base_DataDictionaryDetail WHERE DeleteMark<>1");if (!StringHelper.IsNullOrEmpty(DataDictionaryType)){Sql.Append(@" AND DataDictionaryType=@DataDictionaryType");param.Add(DbFactory.CreateDbParameter("@DataDictionaryType", DataDictionaryType));}if (!StringHelper.IsNullOrEmpty(Code)){Sql.Append(@" AND Code=@Code");param.Add(DbFactory.CreateDbParameter("@Code", Code));}return Factory.FindListBySql(Sql.ToString(), param.ToArray());}/// <summary>/// 获取类型关键字/// </summary>/// <param name="DataDictionaryTitle"></param>/// <param name="DataDictionaryType"></param>/// <returns></returns>public List<Base_DataDictionaryDetail> GetDataDictionaryList(string DataDictionaryTitle, string DataDictionaryType){StringBuilder Sql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();Sql.Append(@"SELECT * FROM Base_DataDictionaryDetail WHERE DeleteMark<>1");if (!StringHelper.IsNullOrEmpty(DataDictionaryType)){Sql.Append(@" AND DataDictionaryType=@DataDictionaryType");param.Add(DbFactory.CreateDbParameter("@DataDictionaryType", DataDictionaryType));}if (!StringHelper.IsNullOrEmpty(DataDictionaryTitle)){Sql.Append(@" AND DataDictionaryTitle like @DataDictionaryTitle");param.Add(DbFactory.CreateDbParameter("@DataDictionaryTitle", '%' + DataDictionaryTitle + '%'));}return Factory.FindListBySql(Sql.ToString(), param.ToArray());}/// <summary>/// 获取关于协会分页数据/// </summary>/// <param name="ArticleTitle"></param>/// <param name="jgp"></param>/// <returns></returns>public DataTable GetAboutTablePage(ref JqGridParam jgp){StringBuilder Sql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();Sql.Append(@"SELECT * FROM(SELECT X1.DataDictionaryTitle,X1.Code,X1.SortCode,X2.* from (SELECT * FROM dbo.Base_DataDictionaryDetail WHERE DeleteMark<>1 AND DataDictionaryType='About') X1LEFT JOIN (SELECT * FROM Com_Article WHERE DeleteMark<>1 AND State=1) X2ON X1.Code=x2.ArticleType) TT WHERE 1=1 ");return Factory.FindTablePageBySql(Sql.ToString(), param.ToArray(), ref jgp);}/// <summary>/// /// </summary>/// <param name="jgp"></param>/// <returns></returns>public DataTable GetAboutTableAllPage(ref JqGridParam jgp){StringBuilder Sql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();Sql.Append(@"SELECT * FROM(SELECT X1.DataDictionaryTitle,X1.Code,X1.SortCode,X2.* from (SELECT * FROM dbo.Base_DataDictionaryDetail WHERE DeleteMark<>1 AND DataDictionaryType='About') X1LEFT JOIN (SELECT * FROM Com_Article WHERE DeleteMark<>1) X2ON X1.Code=x2.ArticleType) TT WHERE 1=1 ");return Factory.FindTablePageBySql(Sql.ToString(), param.ToArray(), ref jgp);}/// <summary>/// 添加关键字/// </summary>/// <param name="ContentKey"></param>/// <returns></returns>public int SubContentKey(string ContentKey){List<DbParameter> param = new List<DbParameter>();string[] ContentKeyArr = ContentKey.Split(',');int num = 0;try{if (ContentKeyArr.Length > 0){foreach (var item in ContentKeyArr){StringBuilder Sql = new StringBuilder();Sql.Append(@"DELETE Base_DataDictionaryDetail WHERE DeleteMark<>1 AND DataDictionaryType='ContentKey' AND DataDictionaryTitle='" + item + "'");Factory.ExecuteBySql(Sql);Base_DataDictionaryDetail entiy = new Base_DataDictionaryDetail();entiy.DataDictionaryTitle = item;entiy.DataDictionaryType = "ContentKey";entiy.Create();Factory.Insert(entiy);}num = 1;}else{num = 0;}}catch{num= 0;}return num;}/// <summary>/// 获取有数据的关键字/// </summary>/// <param name="Type">关键字类型</param>/// <returns></returns>public List<Base_DataDictionaryDetail> GetContentKeyList(string Type){StringBuilder Sql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();if (!StringHelper.IsNullOrEmpty(Type)){Sql.Append(@"SELECT * FROM(SELECT (SELECT COUNT(FileID) FROM dbo.Com_Attachment WHERE DeleteMark<>1 AND ContentKey like '%'+x.DataDictionaryTitle+'%' AND FileType=@FileType) FileCount,x.DataDictionaryTitle,x.DataDictionaryType,'"+Type+@"' Code,x.DeleteMarkFROM dbo.Base_DataDictionaryDetail x) TWHERE DataDictionaryType='ContentKey' AND DeleteMark<>1 AND FileCount>0");param.Add(DbFactory.CreateDbParameter("@FileType", Type));}return Factory.FindListBySql(Sql.ToString(), param.ToArray());}}
}

  

(3)Base_ProvinceCityBll

using Bobo.DataAccess;
using Bobo.Repository;
using Bobo.Utilities;
using IA.Entity;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace IA.Business.SystemBusiness
{// <summary> /// 省市区域表 /// <author> ///     <name>YHB</name> ///      <date>2018.10.18</date> /// </author> /// </summary> public class Base_ProvinceCityBll : RepositoryFactory<Base_ProvinceCity>{/// <summary>/// 获取区域列表/// </summary>/// <param name="ParentId">附件ID</param>/// <param name="Category">区域类型(province,city)</param>/// <param name="Code">区划代码</param>/// <param name="FullName">区域名称</param>/// <returns></returns>public List<Base_ProvinceCity> GetProvinceCityList(string ParentId, string Category, string Code, string FullName){StringBuilder whereSql = new StringBuilder();List<DbParameter> param = new List<DbParameter>();whereSql.Append(@" AND DeleteMark<>1");if (!StringHelper.IsNullOrEmpty(ParentId)){whereSql.Append(@" AND ParentId=@ParentId");param.Add(DbFactory.CreateDbParameter("@ParentId", ParentId));}if (!StringHelper.IsNullOrEmpty(Category)){whereSql.Append(@" AND Category=@Category");param.Add(DbFactory.CreateDbParameter("@Category", Category));}if (!StringHelper.IsNullOrEmpty(Code)){whereSql.Append(@" AND Code=@Code");param.Add(DbFactory.CreateDbParameter("@Code", Code));}if (!StringHelper.IsNullOrEmpty(FullName)){whereSql.Append(@" AND FullName like '%" + FullName + "%'");}whereSql.Append(@" ORDER BY SortCode DESC");return Factory.FindList(whereSql.ToString(), param.ToArray());}}
}

 

(4)Base_UserBll

using Bobo.DataAccess.DebugLog;
using Bobo.Repository;
using Bobo.Utilities;
using Bobo.Utilities.Membership;
using IA.Entity;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace IA.Business.SystemBusiness
{/// <summary>/// 系统用户表/// </summary>public class Base_UserBll : RepositoryFactory<Base_User>{/// <summary>/// 用户登录/// </summary>/// <param name="Account"></param>/// <param name="Password"></param>/// <param name="IPAddressName"></param>/// <param name="IPAddress"></param>/// <returns></returns>public int UserLogin(string Account, string Password, string IPAddressName, string IPAddress){if (!this.IsLinkServer()){throw new Exception("服务器连接不上," + DbResultMsg.ReturnMsg);}else{Base_User entity = Factory.FindEntity("Account", Account);if (!StringHelper.IsNullOrEmpty(entity) && !StringHelper.IsNullOrEmpty(entity.UserId)){if (entity.Password == Md5Helper.CreateMd5(DESEncrypt.Encrypt(Password, BaseFactory.BaseHelper().GetPwodKey()).ToLower(), 32).ToLower()){IManageUser imanageuser = new IManageUser();imanageuser.UserId = entity.UserId;imanageuser.Account = entity.Account;imanageuser.UserName = entity.RealName;imanageuser.Gender = Convert.ToString(entity.Sex);imanageuser.Code = "System";imanageuser.LogTime = DateTime.Now;imanageuser.CompanyId = "系统";imanageuser.DepartmentId = "系统";imanageuser.IPAddress = IPAddress;imanageuser.IPAddressName = IPAddressName;imanageuser.IsSystem = true;imanageuser.Password = Md5Helper.CreateMd5(DESEncrypt.Encrypt(Password, BaseFactory.BaseHelper().GetPwodKey()).ToLower(), 32).ToLower();ManageProvider.Provider.AddCurrent(imanageuser, false);return 1;//登录成功}else{return 3;//密码错误}}else{return 2;//账户不存在}}}/// <summary>/// 判断是否连接服务器/// </summary>/// <returns></returns>public bool IsLinkServer(){StringBuilder strSql = new StringBuilder();strSql.Append("SELECT  GETDATE()");DataTable dt = Repository().FindTableBySql(strSql.ToString());if (dt != null && dt.Rows.Count > 0){return true;}else{return false;}}}
}

  


转载于:https://www.cnblogs.com/boyzi/p/9951826.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_737162.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最近在看vue的文档 好好学习中 vue中实现通过bus.js实现非父子组件之间的通信 简单明了 ,应用在商城网站上...

一般在项目中,有时候我们需要在组件之间通信传值, 直接看代码吧 在实现之前,首先创建一个文件夹utils, 然后写一个文件名为bus.js, 内容如下 import Vue from vue const bus new Vue()export default bus 在index.vue中 注明: 刚刚发现了一个bug,就是在页面切换回来的时…

第五章 万无一失:网站的高可用架构

内容梳理 网站可用性(Availability)&#xff0c;描述网站可有效访问的特性。Usability&#xff0c;也可为译可用性&#xff0c;强调网站的有用性&#xff0c;体现对用户的使用价值。 5.1 网站可用性的度量与考核 5.1.1 网站可用性度量 通常用多少个9来衡量网站的可用性&#xf…

关于资源类网站我就只服这4个,每一个都能让你大开眼界!

对于经常从事互联网行业的工作者来说&#xff0c;储藏一些资源网站是必备的&#xff0c;方便我们随时将网上的资源一扫而进。今天小编给大家推荐4个实用性超强的资源网站&#xff01; GrowthTools 在线极客工具大全 GrowthTools是一个帮助网络工作者收集实用工具的网站&…

干货!这10个顶级资源网站,不知道实在是太可惜了!

大家一般找资源肯定会先想到百度搜索&#xff0c;可是有时候度娘资源也是有限的。想要的资源找不到怎么办&#xff1f;别担心&#xff0c;今天给大家分享10个资源超级丰富的网站&#xff0c;赶快来看看吧&#xff01; 1.有妖气 中国唯一且最大的纯原创漫画网站&#xff0c;数…

强烈推荐这4个网站,每一个都超级实用,赶快收藏起来吧!

压缩图 一个提供在线图片压缩工具集合的站点&#xff0c;支持GIF压缩、PNG压缩、JPG压缩&#xff0c;还可以在线图片加水印、图片旋转、制作长图拼接、图片改颜色、图片添加文字、图片去底色、证件照换底色、转换格式、图片加边框、制作一寸、两寸证件照等。 比格张 一个专…

在线图片制作网站哪个好 PS图片处理教程

PS 堪称最强大的整容术&#xff0c;不仅修图专业&#xff0c;而且使用较为方便&#xff0c;不管是拍证件照还是艺术照&#xff0c;都会使用到修图工具&#xff0c;就像吃饭睡觉一样&#xff0c;那有什么在线图片制作网站可以对图片进行处理呢&#xff1f; 1 、首先除了经…

5个高质量的自学网站,每天坚持一小时,让你受益一生!

今天给大家整理了5个终身受益的自学网站&#xff0c;里面都是满满的干货&#xff0c;希望能够帮助到大家&#xff01; 我要自学网 http://www.51zxw.net/ 全免费视频教学网&#xff0c;百科全书式自学平台&#xff0c;全方位解读各项技能操作&#xff0c;手把手教会。在线…

网站图片需要付费禁止下载?这个网站神器轻松搞定!

有时候我们需要下载一个有版权或者无版权的图片作为个人使用&#xff0c;但是有些网站是无法直接下载图片的&#xff0c;需要付费购买才行&#xff0c;今天给大家共享一个很简单的方法&#xff0c;只要使用这个网站就可以解决网页需要付费的图片免费下载了&#xff1b; 使用方…

5款黑科技十足的网站!各个真材实料,你一定能用到!

电脑使用得多了&#xff0c;我们收藏网站也越来越多了&#xff0c;作为一个互联网的重度用户&#xff0c;手里最不能缺的就是资源&#xff01;今天小编推荐了6个网站&#xff0c;各个都黑科技十足&#xff0c;超级实用&#xff01;如果你还不知道就真的就太可惜了&#xff01; …

授人以资源不如授人以资源网站!

大多数人都想要获得一些一些真正实用的网站&#xff0c;对学习对工作还是对以后的家庭生活有所帮助&#xff0c;所以小编就整理了5款大家可能会用到的网站&#xff0c;希望大家好好珍藏哦&#xff01; 1. manybooks https://manybooks.net/ 一款完全免费下载和阅读的电子书搜…

推荐6款自学网站,好用到暴风哭泣!

古人表达悲伤用”我心伤悲&#xff0c;莫知我衰“&#xff0c;而你却只会用”蓝瘦香菇”&#xff0c;所以文化确实很重要。可能你现在体会不出来&#xff0c;但是等你到了某个节点&#xff0c;别人把你远远地甩开了&#xff0c;你才知道学习知识的重要性。 下面是小编为大家推…

每天花2小时学习5大学习网站!

直到工作才发现&#xff0c;在学校学得再多知识&#xff0c;到工作中还是要重新学习。不知道大家有没有发现&#xff0c;公司往往会将更高的工资给那些有工作经验的&#xff0c;而不是什么都不会的职场小白。简单的来说&#xff0c;那是因为公司感觉不到你为公司带来的价值。 …

一定要学习的6个网站

其实大家在学校里所读的专业&#xff0c;和在社会上的工作很多都不搭边的。这个时候我们为了升职加薪必须要不断地学习。在这个网络发达的时代&#xff0c;如果不收藏几个学习网站真是可惜了。 接下来小编介绍的这6个网站&#xff0c;每一个都十足好用。坚持下来&#xff0c;你…

被这5个资源网站惊到了!老司机秒懂!

每次遇到什么不会的东西&#xff0c;第一时间想到的就是--上百度&#xff01;实际上我们在百度上也只会翻看前面两页&#xff0c;相信没有多少人会一直翻看后面的内容。这样直接导致我们搜索的内容很有局限性。 实际上我们可以在别的搜索引擎网站进行搜索&#xff0c;这些资源…

6款相见恨晚的资源网站,每个都百里挑一,送给正需要的你!

不知道大家在网上是怎么找资源的呢&#xff1f;是在网站上瞎找呢&#xff1f;还是利用资源网站搜索你想要的资源呢&#xff1f;今天在这里为大家整理的6款相见恨晚的资源网站&#xff0c;无论是最新电影电视剧动漫&#xff0c;还是PPT模板、资料、小说都可以一键帮你搞定&#…

6个不可多得的黑科技网站!

其实在职场办公当中想要提升自己的工作效率&#xff0c;就必须得使用几个工具来帮助自己&#xff0c;网上这种类型的工具网站其实有很多&#xff0c;不仅能够在里面找到你需要的素材&#xff0c;还可以帮助你处理一些文件以及图片设计什么的&#xff0c;下面就带大家看看到底是…

找不到合适的模板素材,那是你没有收藏这个网站!

想要做好公众号&#xff0c;那么编辑公众号推文是重中之重&#xff0c;依靠文章来吸引用户&#xff0c;做好引流拉新。怎样才能写好公众号文章&#xff1f; 除了要有优秀的写作能力&#xff0c;还需要有创新的思维和审美能力&#xff0c;比如文章排版&#xff0c;公众号首图的…

找不到合适的文案配图?你需要收藏这个素材网站

随着互联网的快速发展&#xff0c;线上营销已经成为现在营销的主流方式&#xff0c;比如淘宝运营&#xff0c;微信营销&#xff0c;公众号运营&#xff0c;社群营销等等。线上营销最重要的就是输出有价值的内容&#xff0c;想要写出优秀的文案&#xff0c;配图也是非常重要的&a…

分享一下经常使用的 在线工具网站;如:在线是作图,抠图,格式转换等等…………

转换工具 bejson &#xff08;https://www.bejson.com/convert/html_js/&#xff09; 一款非常好用的在线转换工具支持json、js、html、正则、md5解密等等 代码对比工具 代码对比/归并&#xff08;https://tool.oschina.net/diff&#xff09; 一款非常好用的线上代码对比…

用asp.net建立自己的网站过时了吗?vs2017建站测试笔记

记得long long ago&#xff0c;n years ago用asp.net建立过网站&#xff0c;今天不得以想做一个跨平台的系统&#xff0c;但目前还没有好的工具&#xff0c;不能跨andriod和windows及IOS&#xff0c;那么就做用asp.net个网站吧&#xff01; 一、安装开发环境 首先&#xff0c…