首页 [ 实验作品 ] 工厂模式三层架构增删改查分页(BLL层使用事务)源码
一键分享

工厂模式三层架构增删改查分页(BLL层使用事务)源码

  • 商业

2015-02-17 13:15:09

主要通过WinForm应用程序实现Sql Server 2005,Sqlite 3的增、删、改、查,分页功能。是学习三层架构、工厂模式,操作Sql Server和Sqlite数据库的极佳学习例子

*** RMB 收藏 253 次  |  关注 5018 次  |   下单 13 次


交付物: 源码包
附加服务:  环境搭建 本地没有开发环境,无法运行购买的源代码,需要作者远程指导安装,并保证可以使用。时效一次,以后无义务再提供任何免费服务(请在购买后7日内申请服务,过期失效) 源码部署 本地有开发环境,需要商家帮忙部署到买家的服务器上成功运行。时效一次,以后无义务再提供任何免费服务(请在购买后7日内申请服务,过期失效) 不需要 * 请选择附加服务
    商家已实名认证
  • 分享者:summe***
  • 成交次数:   219 次
  • 访问次数:   10261 次
  • 源码数量:   32 套
  • 通过比率:   82%
  • 活跃于:   三个月前
  • QQ:   645****
  • TEL:   13*******40
  • 最新IP属地:成都市
  • 微信扫码咨询
.net
  • 51Aspx源码必读.txt[8KB]
  • DotNet.TransDbUtils.sln[8KB]
  • DotNet.TransDbUtils.suo[210KB]
  • from.gif[4KB]
  • 最新Asp.Net源码下载.url[123B]

源码介绍

源码参数

  • 源码类别:【实验作品】
  • 源码类型:C/S
  • 适合人群: 进阶高手
  • 授权类型:商业版
  • 开发语言:C#
  • 数据库:SQL2005
  • 源码大小:4.81MB
  • 相关网址: 【免费浏览】
  • 源码指数:
  • 完整度:
  • 程序主界面
  • SqliteDb
  • SqlServerDb
  • 在BLL层使用数据库事务接口
  • 程序主界面
  • SqliteDb
  • SqlServerDb
  • 在BLL层使用数据库事务接口
  • Aspx.Query.CodeImageQueryModel
  • Aspx.Query.CodeImageQueryModel
  • Aspx.Query.CodeImageQueryModel
  • Aspx.Query.CodeImageQueryModel

一、更新记录

1、更新日期:2015-08-05 00:00:00

2、更新内容:
以下是本次更新内容:
1.修改命名空间为DotNet,更具通用性。
2.规范一些代码文件(夹)、方法名称。
3.将数据库事务放到BLL层使用,更利于复杂的业务逻辑编写,保证DAL层的职责简单性。
     【为什么要在BLL层使用数据库事务?】
      (1)由于某些业务逻辑较复杂,需要对数据库多表进行操作,为保证关联数据的完整性,需要使用数据库事务。
      (2)为了实现应用系统(业务逻辑)一次编写即可支持多种数据库,需要使用工厂模式实现多数据库支持。
      (3)一般情况,我们可以在DAL层使用数据库事务,但较多的业务逻辑放在DAL层,使得BLL层和DAL层职责不清,不利于统一在BLL层编写业务逻辑,也不利于在DAL层仅编写简单的数据操作;
      (4)所以,在BLL层使用数据库事务是最优的解决方案。但我们面临一个问题:不同数据库的事务类型不一样,如SQLite数据库事务类型是SQLiteTransaction,SqlServer数据库事务类型是SqlTransaction,由于BLL层的代码应与数据库无关,就不应直接使用某种类型的数据库事务。★解决方法是使用IDbTransaction接口,从而支持在BLL层使用Sqlite和SqlServer等多种不同数据库事务。

一、源码特点
      本软件是一个工厂模式三层架构例子程序(★特点与难点是在BLL层使用数据库事务,而不在DAL层使用数据库事务)。程序通过WinForm应用程序实现Sql Server 2005,Sqlite 3的增、删、改、查,分页功能。是学习三层架构、工厂模式,操作Sql Server和Sqlite数据库的极佳学习例子。本源码是我开发一个10万行代码软件时使用的架构的进化升级版,使用此架构,可以开发复杂的(操作数据库)WinForm或WebForm程序,相信您在学习这个例子程序的时候,能学到很多项目开发经验,包括接口操作、文件组织、编码规范、多数据库、代码重用等等。
      【为什么要在BLL层使用数据库事务?】
      1.由于某些业务逻辑较复杂,需要对数据库多表进行操作,为保证关联数据的完整性,需要使用数据库事务。
      2.为了实现应用系统(业务逻辑)一次编写即可支持多种数据库,需要使用工厂模式实现多数据库支持。
      3.一般情况,我们可以在DAL层使用数据库事务,但较多的业务逻辑放在DAL层,使得BLL层和DAL层职责不清,不利于统一在BLL层编写业务逻辑,也不利于在DAL层仅编写简单的数据操作;
      4.所以,在BLL层使用数据库事务是最优的解决方案。但我们面临一个问题:不同数据库的事务类型不一样,如SQLite数据库事务类型是SQLiteTransaction,SqlServer数据库事务类型是SqlTransaction,由于BLL层的代码应与数据库无关,就不应直接使用某种类型的数据库事务。★解决方法是使用IDbTransaction接口,从而支持在BLL层使用Sqlite和SqlServer等多种不同数据库事务。
二、功能介绍
      1、提供跨线程安全访问控件示例。
      2、提供将异常信息保存为txt文件功能。
      3、提供程序只能运行1个实例,即不允许打开多个本程序的示例。
      4、提供捕获未知异常功能,防止程序发生未捕获异常而崩溃。
      5、提供窗体单列模式功能,即某窗体只能实例化1次,不能将某个窗体重复打开为多个窗体。
      6、提供将BLL层实例静态化,即程序对BLL层进行一次实例化进行使用,不需要在每次使用时实例化。
      7、提供线程锁功能,防止多线程同时访问一个文件冲突。
      8、提供MD5、SHA1等加密算法,数组和泛型转换,中文拼音,生成随机字符串等常用方法。
      9、提供数据库事务例子。
      10、提供SQLiteHelper和SQLHelper使用例子程序,方便操作数据库。  
      11、★本源码另一个最大的优点:修改数据库结构更改极少代码,在实际项目开发中相当实用,从此不再为修改数据库结构而头疼了。示例:  
 // 普通的DAL层代码:修改数据库结构后,需要修改相应parameters代码,很麻烦,易出错。 
 public bool Update(Model.NT_User m) 
 { 
     string sql = "update User set UserName=@UserName where ID=@ID "; 
     SqlParameter[] param = { 
     new SqlParameter("@ID", SqlDbType.Int,4), 
     new SqlParameter("@UserName", SqlDbType.NVarChar,50)}; 
     param[0].Value = m.ID; 
     param[1].Value = m.RoleName; 
     return SqlHelper.ExecuteNonQuery(sql, param) > 0;
 } 
 //使用Utils类的DAL层代码:修改数据库结构后,只需修改fields(表的列名),其他代码不用变,很简单,不出错。 
 private static string tablename = "NT_User";//表名 
 private static string[] fields = "Id,UserName".Split(',');//表的列名
 public bool Update(Model.NT_User m) 
 { 
     string sql = Utils.CreateUpdateSql(tablename, fields, true, " where ID=@ID"); 
     SqlParameter[] param = Utils.CreateSqlParamsByInfo(m); 
     return SqlHelper.ExecuteNonQuery(sql, param) > 0; 
 }
三、注意事项
      1、开发环境为Visual Studio 2010,使用.net 2.0 开发。
      2、项目结构。解决方案WinForm.TransactionDbUtils包含10个项目,主要功能如下:
           DUF.BLL:业务逻辑层,包含各种业务逻辑处理方法;
           DUF.Common:公共方法层,包含各种公共方法,如字符串匹配等,其他各层均有可能使用其中的方法;
           DUF.DALFactory:工厂接口层,定义了数据库访问的接口,DUF.DALSQLite层和DUF.DALSQLServer层实现了工厂接口层的所有方法,若使用其他数据库(如Oracle),则需要参考      DUF.DALSQLite层或DUF.DALSQLServer层再编写DUF.DALOracle层。本层主要用到了反射技术:根据类名生成其实例。
           DUF.DALSQLite:SQLite数据库访问层,包含针对SQLite数据库的增、删、改、查,分页功能。
           DUF.DUF.DALSQLServer:SQL Server数据库访问层,包含针对SQL Server数据库的增、删、改、查,分页功能。
           DUF.Encrypt:本层是AES加解密字符串的例子程序,可用于数据库连接字符串的加解密。
           DUF.Model:实体层,与数据库表及其字段一一对应。
           DUF.Pager:分页控件层,实现了一个WinForm分页控件(支持多线程跨线程安全访问)。
           DUF.UI:应用程序界面层,本软件的WinForm窗体,提供数据录入、展示、操作(修改、删除等)的界面。
           DUF.XmlHelper:XML文件处理层,提供对XML的构建、解析、序列化、反序列化等操作。可用于配置文件的解析等。
           以上10个项目的引用关系请查看各项目的引用(如A项目引用了B项目,C项目引用了D和E项目等)。
      3、使用Sql Server或Sqlite,需要在DUF.UI类中的App.config修改,如使用Sql Server则为<add key="DAL" value="DUF.DALSQLServer" />,使用Sqlite则为<add key="DAL" value="DUF.DALSQLite" />。
      4、Sqlite数据库存放位置:DUF.UI\bin\Debug\SqliteDb\SqliteDbUtilsFactory.db3,连接字符串在DUF.SQLite项目中SQLiteHelper.cs文件中。
      5、Sql Server 2005数据库存放位置:DB_51aspx\SqlServerDbUtilsFactory.mdf,附加即可,本软件无用户名密码。
责任编辑:WALL·E

下单记录

用户名 源码评分 成交价 下单时间 订单状态

源码评论

单击更换

评论列表

全部评论
  • 暂无评论 …

最近更新

      下载排行