系统初始化的运行效果如下:

参数表是为了防止反复被初始化的,防止关键数据丢失。

其实很多人都提过希望有系统初始化的功能,最近稍微空一些,就给系统增加了一个初始化的功能,给大家参考一下。

首先写了一个存储过程如下,把系统中的表都清理干净,存储过程的名字叫“SystemInitialize”

View Code

-- =============================================
-- Author:        <吉日嘎拉>
-- Create date: <2012.01.18>
-- Description:    <初始化系统>
-- =============================================
ALTER PROCEDURE [dbo].[SystemInitialize] 
AS
BEGIN
    SET NOCOUNT ON;
    
    -- 检查是否已经初始化过系统?只允许初始化一次
    DECLARE @Worked int;
    SELECT @Worked = Worked FROM Base_Parameter WHERE ID = 10000000 AND ParameterContent = 'None';
    
    IF @Worked > 0
    BEGIN
      RETURN;
    END

-- 名片管理
    TRUNCATE TABLE Base_Businesscard;
    -- 评论表
    TRUNCATE TABLE Base_Comment;
    -- 联络单明细表
    TRUNCATE TABLE Base_ContactDetails;
    -- 联络单主表
    TRUNCATE TABLE Base_Contact;
    -- 系统异常表
    TRUNCATE TABLE Base_Exception;
    -- 文件表
    TRUNCATE TABLE Base_File;
    -- 文件夹表
    TRUNCATE TABLE Base_Folder;
    -- 数据字典主表(资源)
    -- Base_Items
    -- 工作流示例—请假单表
    TRUNCATE TABLE Base_Leave;
    -- 系统日志表
    TRUNCATE TABLE Base_Log;
    -- 消息表
    TRUNCATE TABLE Base_Message;
    -- 模块(菜单)表 通用权限以外的全删除
    DELETE FROM Base_Module WHERE AllowDelete = 1;
    -- 组织机构、部门表 删除的测试数据
    DELETE FROM Base_Organize WHERE IsInnerOrganize = 1;
    -- 新闻表
    TRUNCATE TABLE Base_News;
    -- 系统参数配置表
    DELETE FROM Base_Parameter WHERE (ID <> 10000000);
    -- 操作权限存储表
    TRUNCATE TABLE Base_Permission;
    -- 数据集权限存储表
    TRUNCATE TABLE Base_PermissionScope;
    -- 操作权限项定义 删除通用权限意外的全部权限定义
    DELETE FROM Base_PermissionItem WHERE AllowDelete = 1;
    -- 项目表
    TRUNCATE TABLE Base_Project;
    -- 员工(职员)表组织关系表
    TRUNCATE TABLE Base_StaffOrganize;
    -- 员工(职员)表
    TRUNCATE TABLE Base_Staff;
    -- 序列产生器表
    TRUNCATE TABLE Base_Sequence;
    -- 表字段结构定义说明
    TRUNCATE TABLE Base_TableColumns;
    -- 用户送货地址表
    TRUNCATE TABLE Base_UserAddress;
    -- 用户帐户组织关系表
    TRUNCATE TABLE Base_UserOrganize;
    -- 用户帐户角色关系表
    TRUNCATE TABLE Base_UserRole;
    -- 用户帐户表
    DELETE FROM Base_User WHERE UserName != 'Administrator';
    -- 系统角色表
    DELETE FROM Base_Role WHERE Code != 'Administrators';
    -- 工作日志表
    TRUNCATE TABLE Base_WorkReport;
    
    -- 设置已初始化标志,防止反复初始化系统
    UPDATE Base_Parameter SET Worked = 1, ParameterContent = 'Processed' WHERE ID = 10000000;

END

在通用权限管理系统组件中调用存储过程的方法如下

View Code

private void btnInitialize_Click(object sender, EventArgs e)
        {
            // 默认按钮放在第2个按钮上,尽量防止误操作。
            if (MessageBox.Show(AppMessage.MSG3000, AppMessage.MSG0000, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.OK)
            {
                // 按系统的配置信息动态获取数据库连接
                using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))
                {
                    try
                    {
                        // 打开数据库连接
                        dbHelper.Open(BaseSystemInfo.UserCenterDbConnection);
                        // 执行存储过程
                        int returnValue = dbHelper.ExecuteNonQuery(CommandType.StoredProcedure, "SystemInitialize");
                        // 成功的提示信息
                        MessageBox.Show(AppMessage.MSG3010, AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.btnInitialize.Enabled = false;
                    }
                    catch (Exception ex)
                    {
                        // 在本地文件中记录系统异常信息
                        this.WriteException(ex);
                        throw ex;
                    }
                    finally
                    {
                        // 关闭数据库库连接
                        dbHelper.Close();
                    }
                }
            }
        }

判断当前用户是否已经登录,当前用户是否超级管理员,当前连接的数据库类型等的参考代码如下

View Code

public override void SetControlState()
        {
            // 已经登录了系统,并且是系统管理员才可以做这个服务器端的配置,第一次用时无法配置系统了
            /*
            if (!BaseSystemInfo.LogOned || !this.UserInfo.IsAdministrator)
            {
                this.tcConfirm.TabPages.Remove(tpServer);
            }
            */
            // 有并发数设置时,不允许重复登录。
            if (this.nupOnLineLimit.Value > 0)
            {
                this.chkCheckOnLine.Checked = false;
                this.chkCheckOnLine.Enabled = false;
            }
            else
            {
                this.chkCheckOnLine.Enabled = true;
            }
            // 只有系统管理员才可以初始化系统,并却是sqlserver数据库下才运行
            this.btnInitialize.Visible = BaseSystemInfo.LogOned && BaseSystemInfo.UserInfo.IsAdministrator;
            if (this.btnInitialize.Visible)
            {
                if (BaseSystemInfo.UserCenterDbType == DataBaseType.SqlServer)
                {
                    string parameter = DotNetService.Instance.ParameterService.GetParameter(UserInfo, "System", "System", "Initialize");
                    if (!string.IsNullOrEmpty(parameter) && parameter.Equals("None"))
                    {
                        this.btnInitialize.Enabled = true;
                    }
                }
            }
        }

给大家分享一下比较强大的完整的数据库访问组件,经过了7-8年的考研,运行稳定,编码风格良好,完整源码下载地址如下:

/Files/jirigala/DotNet.Utilities.rar

源码效果图如下:

转载于:https://www.cnblogs.com/jirigala/archive/2012/01/18/2325578.html

通用权限管理系统组件 (GPM - General Permissions Manager) 给信息管理系统加一个初始化的功能,调用存储过程...相关推荐

  1. 通用权限管理系统组件 (GPM - General Permissions Manager)

    只开发一套业务管理系统,或者只维护一套业务管理系统是相对简单的事情,但是你要同时给多个客户开发多套系统,或者同时维护多个公司提供的多套系统时烦恼就来了,我们通用权限管理系统里有比较好的实现方式,有可以 ...

  2. 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...

    政府性质的单位里很少有人员流动,一般对系统的权限要求都是相对固定一些,所以有时候会有对系统按所在部门进行配置的需求,而且很有说服力,我们通用权限管理系统组件里也同样可以权限按所在部门设置.可以灵活满足 ...

  3. 通用权限管理系统组件 (GPM - General Permissions Manager) - 支持请求

    为什么80%的码农都做不了架构师?>>>    首先感谢您支持关注通用权限管理系统组件,若有什么我们可以帮助您的,可以在下面留言发表您的建议,我们会尽快与您联系. 转载于:https ...

  4. 通用权限管理系统组件 (GPM - General Permissions Manager) 不改数据库、甚至不写代码就集成铜墙铁壁权限管理组件...

    为什么80%的码农都做不了架构师?>>>    越成熟的东西,越牛X的东西,越简单才对,简单才是硬道理,苹果的手机只有少数几个按键,苹果Ipad也很少的按钮,甚至连苹果的笔记本键盘都 ...

  5. 通用权限管理系统组件 (GPM - General Permissions Manager) 在跨国直销企业电子商务项目中的成功应用...

    我所在是一家跨国家直销公司,在亚太某国家电子商务项目中,2011年底系统全面应用了通用权限数据访问层类库及工具类库,支持了每月万级会员加入.千万级订单:同时,在我们的项目开发过程中,完全由外包工程师来 ...

  6. 通用权限管理系统组件 (GPM - General Permissions Manager) 权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱...

    为什么80%的码农都做不了架构师?>>>    权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱 Ψ吉日嘎拉 采用通用权限管理系统,这些烦恼就 ...

  7. 通用权限管理系统组件 (GPM - General Permissions Manager) 中后一个登录的把前一个登录的踢掉功能的实现...

    最近客户有需要,同一个帐户可以重复登录系统,但是后登录的账户需要把前面已经登录的账户踢掉,例如客户把电脑打开在别的电脑上然后换一个房间,或者换个办公楼想登录时就会遇到很多麻烦,遇到郁闷的情况就是死活无 ...

  8. 通用权限管理系统组件 (GPM - General Permissions Manager) 中及时通讯功能的改进

    以前的通用权限管理系统的及时通讯只能按组织机构展示用户列表结构,现在不仅仅可以按组织机构展示,还可以按系统应用角色分组,用户自己的个性化通讯录分组进行展示用户数据了,用起来也应该更符合大家的习惯了. ...

  9. 通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多系统的统一登录(数据库源码级)附源码...

    眼前有20万行以上的代码时很多人都会眼花缭乱,不知道从哪里开始下手了,甚至不会去研究几下就直接放弃了.其实大多时候没有想象的那么复杂,代码里一大部分都是有重复的,有本质上差别的部分还是很少的. 春节期 ...

最新文章

  1. FreeNAS安装与应用—安装篇
  2. python2和3的区别字符编码格式上下文管理is和==的区别
  3. 下载安装oracle旧版本oracle 12c的详细步骤
  4. des算法密码多长_密码学中的多个DES
  5. python中的面向对象:类与对象(重点!!!)
  6. java gui容器_[Java教程]GUI Panel 容器以及布局管理器
  7. 用c语言实现简单的tcp协议,实现一个简单的TCP协议下的C/S
  8. jQuery学习之一---选择器
  9. ElasticSearch索引的基本操作命令
  10. Centos 之find详解
  11. android oppo 驱动,Android Studio无法连接OPPO
  12. 云服务器搭网站需要买域名吗,买了云服务器还要买域名吗
  13. 《彼得林奇的成功投资》一——好公司第一位,价格第二位
  14. 联通光纤猫hg8240路由功能开启
  15. TensorFlow Objection Detection API使用教程
  16. C++语言Switch函数使用小贴士
  17. app inventor+tinywebDB远程控制掌控板
  18. iOS逆向:微信逆向及动态库开发过程中的坑
  19. Python基础入门之列表生成式
  20. nginx之配置文件解读及虚拟主机配置

热门文章

  1. 网关层面为何要用Lua
  2. MySQL小表join大表的正确使用姿势(straight_join 关键字的使用)
  3. spring aop记录日志方案设计
  4. QML ListView几个常用且非常重要的属性
  5. 【已解决】nimfa 环境的详细搭建过程 + 各种依赖库的安装、下载、调试
  6. 在linuxc中如何实现输入隐藏
  7. 解决:pycharm中动画函数animation.FuncAnimation不起作用
  8. 小型项目服务器要多少,小型服务器需要什么配置
  9. android studio sift,android - 使用SIFT / SURF通过Android Studio在Android上使用opencv进行特征提取 - 堆栈内存溢出...
  10. win7蓝屏_Win7大面积蓝屏?急!解决办法在这儿~