(一) 定义一个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; }
取出加盐中的字符