自己写的数据访问层(使用ini文件加密存储sql数据库登陆信息)

来源:互联网 发布:网络直播主持招聘 编辑:程序博客网 时间:2024/05/17 16:46

数据访问类:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.InteropServices;
using System.Text;
using System.Data.SqlClient;

 

/// <summary>
/// Base 的摘要说明
/// </summary>
public class Base
{
    //写入Ini文件API函数
    [DllImport("kernel32")]
    private static extern bool WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);

    //读取Ini文件API函数
    [DllImport("kernel32")]
    public static extern bool GetPrivateProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize, string lpFileName);
   
    public string connectionstring="";
    public SqlConnection conn;
    Code code = new Code();
    public Base()
 {
        this.GetConnectionstring();
        conn = new SqlConnection(connectionstring);
 }
    //获取数据库连接字符串
    private void GetConnectionstring()
    {
        string file_name =HttpContext.Current.Server.MapPath("set.ini");
        string server_ip = "";
        string server_name = "";
        string server_pwd = "";
        StringBuilder sb = new StringBuilder(30);
        GetPrivateProfileString("ip", "server_ip", "", sb, sb.Capacity, file_name);
        server_ip =code.Decrypt3DES(sb.ToString().Trim());
        sb = new StringBuilder(30);
        GetPrivateProfileString("name", "server_name", "", sb, sb.Capacity, file_name);
        server_name =code.Decrypt3DES(sb.ToString().Trim());
        sb = new StringBuilder(30);
        GetPrivateProfileString("pwd", "server_pwd", "", sb, sb.Capacity, file_name);
        server_pwd =code.Decrypt3DES(sb.ToString().Trim());
        connectionstring = "server=" + server_ip + ";database=wsbm;user id=" + server_name + ";pwd=" + server_pwd + ";MAx pool size=100";
      
    }

    //判断数据库连接是否可用
    public bool IsDataServer()
    {
        try
        {
            conn.Open();
            conn.Close();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            if(conn.State==ConnectionState.Open)
            {
                conn.Close();
            }
        }
    }

    //执行select语句
    public DataSet ExecSelect(string sql, string table)
    {
        conn.Open();
        SqlDataAdapter adap = new SqlDataAdapter(sql, conn);
        DataSet ds = new DataSet();
        try
        {
            ds.Clear();
            if (table != "")
            {
                adap.Fill(ds, table);
                return ds;
            }
            else
            {
                adap.Fill(ds);
                return ds;
            }
        }
        catch (SqlException ex)
        {
            throw (new Exception(ex.Message));
        }
        finally
        {
            ds.Dispose();
            adap.Dispose();
            conn.Close();
        }
    }

    //执行insert,delete,update语句
    public bool ExecTransact(string str_sql)
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(str_sql, conn);
        try
        {
            int i = cmd.ExecuteNonQuery();
            if (i > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (SqlException ex)
        {
            throw (new Exception(ex.Message));
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
        }
    }

    //判断是记录否存在,返回布尔
    public bool ExecIsRecord(string str_sql)
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(str_sql, conn);
        try
        {
            SqlDataReader read = cmd.ExecuteReader();
            if (read.HasRows)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        catch (SqlException ex)
        {
            throw (new Exception(ex.Message));
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
        }
    }

    //使用事务处理,删除考试级别
    public bool Del_ksjb(string sql1, string sql2,string sql3)
    {
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        SqlTransaction trans;
        trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
        cmd.Connection = conn;
        cmd.Transaction = trans;
        try
        {
            cmd.CommandText = sql1;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql2;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql3;
            cmd.ExecuteNonQuery();
            trans.Commit();
            return true;
        }
        catch (Exception e)
        {
            try
            {
                trans.Rollback();//回滚事务
            }
            catch (System.Data.SqlClient.SqlException ex)//回滚失败的处理
            {
                if (trans.Connection != null)
                {
                    throw (new Exception("一个异常: " + ex.GetType() +
                        "在执行事务回滚操作时发生"));

                }
            }
            throw (new Exception(e.Message));
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
    //使用事务处理,删除考试专业
    public bool Del_kszy(string sql1, string sql2)
    {
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        SqlTransaction trans;
        trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
        cmd.Connection = conn;
        cmd.Transaction = trans;
        try
        {
            cmd.CommandText = sql1;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql2;
            cmd.ExecuteNonQuery();          
            trans.Commit();
            return true;
        }
        catch (Exception e)
        {
            try
            {
                trans.Rollback();//回滚事务
            }
            catch (System.Data.SqlClient.SqlException ex)//回滚失败的处理
            {
                if (trans.Connection != null)
                {
                    throw (new Exception("一个异常: " + ex.GetType() +
                        "在执行事务回滚操作时发生"));

                }
            }
            throw (new Exception(e.Message));
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    //使用事务处理,删除考试内容
    public bool Del_ksnr(string sql1, string sql2,string sql3,string sql4,string sql5,string sql6)
    {
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        SqlTransaction trans;
        trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
        cmd.Connection = conn;
        cmd.Transaction = trans;
        try
        {
            cmd.CommandText = sql1;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql2;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql3;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql4;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql5;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql6;
            cmd.ExecuteNonQuery();
            trans.Commit();
            return true;
        }
        catch (Exception e)
        {
            try
            {
                trans.Rollback();//回滚事务
            }
            catch (System.Data.SqlClient.SqlException ex)//回滚失败的处理
            {
                if (trans.Connection != null)
                {
                    throw (new Exception("一个异常: " + ex.GetType() +
                        "在执行事务回滚操作时发生"));

                }
            }
            throw (new Exception(e.Message));
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    //使用事务处理,同时执行3条语句
    public bool ExecTransact_3(string sql1, string sql2,string sql3)
    {
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        SqlTransaction trans;
        trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
        cmd.Connection = conn;
        cmd.Transaction = trans;
        try
        {
            cmd.CommandText = sql1;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql2;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql3;
            cmd.ExecuteNonQuery();
            trans.Commit();
            return true;
        }
        catch (Exception e)
        {
            try
            {
                trans.Rollback();//回滚事务
            }
            catch (System.Data.SqlClient.SqlException ex)//回滚失败的处理
            {
                if (trans.Connection != null)
                {
                    throw (new Exception("一个异常: " + ex.GetType() +
                        "在执行事务回滚操作时发生"));

                }
            }
            throw (new Exception(e.Message));
            return false;
        }
        finally
        {
            conn.Close();
        }
    }

    //使用事务处理,同时执行2条语句
    public bool ExecTransact_2(string sql1, string sql2)
    {
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        SqlTransaction trans;
        trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
        cmd.Connection = conn;
        cmd.Transaction = trans;
        try
        {
            cmd.CommandText = sql1;
            cmd.ExecuteNonQuery();
            cmd.CommandText = sql2;
            cmd.ExecuteNonQuery();          
            trans.Commit();
            return true;
        }
        catch (Exception e)
        {
            try
            {
                trans.Rollback();//回滚事务
            }
            catch (System.Data.SqlClient.SqlException ex)//回滚失败的处理
            {
                if (trans.Connection != null)
                {
                    throw (new Exception("一个异常: " + ex.GetType() +
                        "在执行事务回滚操作时发生"));

                }
            }
            throw (new Exception(e.Message));
            return false;
        }
        finally
        {
            conn.Close();
        }
    }
}
 

 

加密类:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Security.Cryptography;//加密
using System.Text;

/// <summary>
/// Code 的摘要说明
/// </summary>
public class Code
{
 public Code()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }
    //3des加密
    public string Encrypt3DES(string strString)
    {
        string strKey = "malong";
        TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
        MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
       
        DES.Key = hashMD5.ComputeHash(Encoding.ASCII.GetBytes(strKey));
        DES.Mode = CipherMode.ECB;

        ICryptoTransform DESEncrypt = DES.CreateEncryptor();

        byte[] Buffer = Encoding.ASCII.GetBytes(strString);
        return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
    }
    //解密
    public string Decrypt3DES(string strString)
    {
        string strKey = "malong";
        TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
        MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();

        DES.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(strKey));
        DES.Mode = CipherMode.ECB;
        ICryptoTransform DESDecrypt = DES.CreateDecryptor();
        string result = "";
        try
        {
            byte[] Buffer = Convert.FromBase64String(strString);
            result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }
        catch (System.Exception e)
        {
           throw (new System.Exception("null", e));
        }
        return result;
    }
    //md5加密
    public string EncryptMD5(string str)
    {
        MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
        string s=ASCIIEncoding.ASCII.GetString(hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(str)));
        return s;
    }  

}

 

 

原创粉丝点击