zoukankan      html  css  js  c++  java
  • HRMSYS项目源码分析(一)

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

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add name="connstr"
             connectionString="Data Source=.; Initial Catalog=HRMSYSDB;User ID=hrmsa;Password=love@beijing"/>
      </connectionStrings>
      <appSettings>
        <add key="passwordSalt" value="love?P3@9"/>
        <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();
                    }
                }
            }
    View Code

      定义一个返回值是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;
            }

      取出加盐中的字符

  • 相关阅读:
    Android自定义之仿360Root大师水纹效果
    Android之TextView的Span样式源码剖析
    Android之TextView的样式类Span的使用详解
    随着ScrollView的滑动,渐渐的执行动画View
    仿微信主界面导航栏图标字体颜色的变化
    android自定义之 5.0 风格progressBar
    Android性能优化之内存篇
    Android性能优化之运算篇
    How to install Zabbix5.0 LTS version with Yum on the CentOS 7.8 system?
    How to install Zabbix4.0 LTS version with Yum on the Oracle Linux 7.3 system?
  • 原文地址:https://www.cnblogs.com/dandandeyoushangnan/p/4502011.html
Copyright © 2011-2022 走看看