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

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

   吉日嘎拉,通用权限管理系统组件

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

   吉日嘎拉,通用权限管理系统组件

   吉日嘎拉,通用权限管理系统组件

 

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

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

ExpandedBlockStart.gif 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

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

ExpandedBlockStart.gif 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();
                    }
                }
            }
        }

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

ExpandedBlockStart.gif 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 

  源码效果图如下:

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值