HRMSYS项目源码分析(一)

 (一) 定义一个Class类名为SqlHelper

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="connstr"
         connectionString="Data Source=.; Initial Catalog=HRMSYSDB;User ID=hrmsa;[email protected]"/>
  </connectionStrings>
  <appSettings>
    <add key="passwordSalt" value="[email protected]"/>
    <add key="aaa" value="333"/>
  </appSettings>
</configuration>

  首先把数据库连接代码放到配置文件中,利用connectionString add标签,其次把MD5加盐的字符串放入appSetting,add标签,利用key-value键值对。

public static readonly string connstr =
            ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;

  取出配置文件中数据库链接代码,设置为static变量,用静态变量模拟全局变量,设置为readonly只读字段,用ConfigurationManager,需要引用System.Configuration.

   public static int ExecuteNonQuery(string sql,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteNonQuery();
                }
            }
        }

  定义一个返回值是int的静态函数,静态方法调用更方便,不需要new一个对象(实例化类),输入sql语句和一个sqlparameter参数数组,using是为了执行完就释放空间,首先新建一个Sqlconnection对象,需要用到配置文件中参数。然后打开数据库,执行CommandText属性。返回一个int值。一般用到updata和insert还有delete。

   public static object ExecuteScalar(string sql,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteScalar();
                }
            }
        }

 

同样的操作。然后返回一个值。主要用来执行select语句。返回一个父类

 public static DataTable ExecuteDataTable(string sql,
            params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);

                    DataSet dataset = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    adapter.Fill(dataset);
                    return dataset.Tables[0];
                }
            }

利用Dataset类,首先new一个,然后把cmd装入SqlDataAdapter,在把SqlDaraAdaper装入(Fill属性)DataSet中。返回Dataset中的table【0】表,即第一个表,返回的是一个Datatable类,里面有rows和ROWS【“列名”】。

  

  public static object FromDbValue(object value)
        {
            if (value == DBNull.Value)
            {
                return null;
            }
            else
            {
                return value;
            }
        }

        public static object ToDbValue(object value)
        {
            if (value == null)
            {
                return DBNull.Value;
            }
            else
            {
                return value;
            }
        }

  连个静态方法,返回的都是object类,他们的作用就是把从数据库里面取出的列(属性,字段),若是DBNULL.Value(在数据库里表示null),返回null。装入数据库中也是一样,若是null的字段,全部转换成DBNull.Value.

(二)定义一个CommonHelper类,用来放通用的代码

 public static string GetMD5(string sDataIn)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] bytValue, bytHash;
            bytValue = System.Text.Encoding.UTF8.GetBytes(sDataIn);
            bytHash = md5.ComputeHash(bytValue);
            md5.Clear();
            string sTemp = "";
            for (int i = 0; i < bytHash.Length; i++)
            {
                sTemp += bytHash[i].ToString("X").PadLeft(2, ‘0‘);
            }
            return sTemp.ToLower();
        }

  首先写一个MD5加密算法的方法,把一个字符输入,返回这个字符串的MD5代码

 public static string GetPasswordSalt()
        {
            string salt = ConfigurationManager.AppSettings["passwordSalt"];
            return salt;
        }

  取出加盐中的字符

时间: 2024-10-26 17:00:56

HRMSYS项目源码分析(一)的相关文章

HRMSYS项目源码分析(二)

public class IdName { public Guid Id { get; set; } public string Name { get; set; } } (一)新建一个idName类放在model类库里面,定义两个自动属性. public class IdNameDAL { public IdName[] GetByCategory(string category) { DataTable table = SqlHelper.ExecuteDataTable("select I

Android 开源项目源码分析第一期正式发布

由 Trinea 发起.几十名 Android 开发者参与的Android 开源项目源码分析第一期正式发布. 从简介.总体设计.流程图.详细设计全方面分析开源库源码,第一期包括 10 个著名开源库及 5 个公共技术点的全面介绍. 分析文档 作者 Volley 源码解析 grumoon Universal Image Loader 源码分析 huxian99 Dagger 源码解析 扔物线 EventBus 源码解析 Trinea xUtils 源码解析 Caij ViewPagerindicat

《转》 Ceilometer项目源码分析----ceilometer项目源码结构分析

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如果转载,请保留作者信息. 博客地址:http://blog.csdn.net/gaoxingnengjisuan 邮箱地址:[email protected] PS:最近没有登录博客,很多朋友的留言没有看见,这里道歉!还有就是本人较少上QQ,可以邮件交流. ceilometer主要概念 sample:采样数据是每个采集时间点上meter对应的值: statistics:一般是统计学上某个周期内,meter对

建筑材料asp.net mvc项目源码分析记录

1.开发工具 vs2010 sp1 mvc4, 问题: 最近遇到项目开发项目,需要缺少的 Web 组件才能进行加载.是否立即使用 Web 平台安装程序下载并安装这些组件? 解决方法如下: 1. 用记事本打开项目XXX.csproj文件,找到WebProjectProperties节点下的 <UseIIS>True</UseIIS>节点,然后改为     <UseIIS>false</UseIIS>即可:

ABP源码分析二十六:核心框架中的一些其他功能

本文是ABP核心项目源码分析的最后一篇,介绍一些前面遗漏的功能 AbpSession AbpSession: 目前这个和CLR的Session没有什么直接的联系.当然可以自定义的去实现IAbpSession使之与CLR的Session关联 IAbpSession:定义如下图中的四个属性. NullAbpSession:IAbpSession的一个缺省实现,给每个属性都给予null值,无实际作用 ClaimsAbpSession:实现了从ClaimsPrincipal/ClaimsIdentity

Cordova Android源码分析系列一(项目总览和CordovaActivity分析)

PhoneGap/Cordova是一个专业的移动应用开发框架,是一个全面的WEB APP开发的框架,提供了以WEB形式来访问终端设备的API的功能.这对于采用WEB APP进行开发者来说是个福音,这可以避免了原生开发的某些功能.Cordova 只是个原生外壳,app的内核是一个完整的webapp,需要调用的原生功能将以原生插件的形式实现,以暴露js接口的方式调用. Cordova Android项目是Cordova Android原生部分的Java代码实现,提供了Android原生代码和上层We

dubbo源码分析系列——项目工程结构介绍

摘要 dubbo是目前国内最流行的分布式服务框架,已经俨然成为行业的标准了,多数无自研能力的公司都在使用这个框架,而且这个框架本身非常具有代表性,即使很多公司自研的分布式服务框架也都是对dubbo的扩展或者借鉴了该框架,因此研究它的源码意义还是非常大的,对于掌握分布式服务框架的原理和实现细节有着非常好的帮助. 项目源码地址 本系列文章是基于当当网维护的dubbox版本进行分析的,源码地址参考:https://github.com/dangdangdotcom/dubbox 项目源码结构 我们下载

【.NET Core项目实战-统一认证平台】第八章 授权篇-IdentityServer4源码分析

[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何在网关上实现客户端自定义限流功能,基本完成了关于网关的一些自定义扩展需求,后面几篇将介绍基于IdentityServer4(后面简称Ids4)的认证相关知识,在具体介绍ids4实现我们统一认证的相关功能前,我们首先需要分析下Ids4源码,便于我们彻底掌握认证的原理以及后续的扩展需求. .netcore项目实战交流群(637326624),有兴趣的朋友可以在群里交流讨论. 一.Ids4文档及源码 文档地址 http:/

分析开源项目源码,我们该如何入手分析?(授人以渔)

1 前言 本文接上篇文章跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?,那么本篇文章再继续跟小伙伴们聊聊源码这个话题. 在工作之余开始写SpringBoot源码分析专栏前,跟小伙伴们聊聊"分析开源项目源码,我们该如何入手分析?"这个话题,我们就随便扯皮,反正是跟小伙伴们一起学习交流,没必要太正式. 小伙伴们看完本文后,若有自己的源码阅读心得可以在下面进行评论或私聊我进行分享,让我从小伙伴们身上GET多点源码阅读的一些技巧,嘿嘿. 2 学习开源框架源码到底难不难? 那么,先跟小伙