欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現(xiàn)較為實用的SQLhelper

 更新時間:2016年10月22日 15:27:24   作者:天空的影子  
這篇文章主要為大家詳細介紹了C#實現(xiàn)較為實用SQLhelper的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

第一次寫博客,想不到寫什么好b( ̄▽ ̄)d ,考慮的半天決定從sqlhelper開始,sqlhelper對程序員來說就像helloworld一樣,很簡單卻又很重要,helloworld代表著程序員萌新第一次寫代碼,而sqlhelper則是初次接觸數(shù)據庫(不知道這種說法對不對)。

好了不廢話了,下面直接上代碼(無話可說了):

public class SQLHelper
  {
    // 超時時間
    private static int Timeout = 1000;
    // 數(shù)據庫名稱
    public const String BestNet = "BestNet";
    //存儲過程名稱
    public const String UserInfoCURD = "UserInfoCURD";
    // 數(shù)據庫連接字符串
    private static Dictionary<String, String> ConnStrs = new Dictionary<String, String>();

    /// <summary>
    /// SQLServer操作類(靜態(tài)構造函數(shù))
    /// </summary>
    static SQLHelper()
    {
      ConnectionStringSettingsCollection configs = WebConfigurationManager.ConnectionStrings;
      foreach (ConnectionStringSettings config in configs)
      {
        ConnStrs.Add(config.Name, config.ConnectionString);
      }
    }

    /// <summary>
    /// 獲取數(shù)據庫連接
    /// </summary>
    /// <param name="database">數(shù)據庫(配置文件內connectionStrings的name)</param>
    /// <returns>數(shù)據庫連接</returns>
    private static SqlConnection GetConnection(string database)
    {
      if (string.IsNullOrEmpty(database))
      {
        throw new Exception("未設置參數(shù):database");
      }
      if (!ConnStrs.ContainsKey(database))
      {
        throw new Exception("未找到數(shù)據庫:" + database);
      }
      return new SqlConnection(ConnStrs[database]);
    }

    /// <summary>
    /// 獲取SqlCommand
    /// </summary>
    /// <param name="conn">SqlConnection</param>
    /// <param name="transaction">SqlTransaction</param>
    /// <param name="cmdType">CommandType</param>
    /// <param name="sql">SQL</param>
    /// <param name="parms">SqlParameter數(shù)組</param>
    /// <returns></returns>
    private static SqlCommand GetCommand(SqlConnection conn, SqlTransaction transaction, CommandType cmdType, string sql, SqlParameter[] parms)
    {
      SqlCommand cmd = new SqlCommand(sql, conn);
      cmd.CommandType = cmdType;
      cmd.CommandTimeout = Timeout;
      if (transaction != null)
        cmd.Transaction = transaction;
      if (parms != null && parms.Length != 0)
        cmd.Parameters.AddRange(parms);
      return cmd;
    }

    /// <summary>
    /// 查詢數(shù)據,返回DataTable
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="parms">參數(shù)</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <returns>DataTable</returns>
    public static DataTable QueryDataTable(string database, string sql, SqlParameter[] parms, CommandType cmdType)
    {
      if (string.IsNullOrEmpty(database))
      {
        throw new Exception("未設置參數(shù):database");
      }
      if (string.IsNullOrEmpty(sql))
      {
        throw new Exception("未設置參數(shù):sql");
      }

      try
      {
        using (SqlConnection conn = GetConnection(database))
        {
          conn.Open();

          using (SqlCommand cmd = GetCommand(conn, null, cmdType, sql, parms))
          {
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
              DataTable dt = new DataTable();
              da.Fill(dt);
              return dt;
            }
          }
        }
      }
      catch (SqlException ex)
      {
        System.Text.StringBuilder log = new System.Text.StringBuilder();
        log.Append("查詢數(shù)據出錯:");
        log.Append(ex);
        throw new Exception(log.ToString());
      }
    }

    /// <summary>
    /// 查詢數(shù)據,返回DataSet
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="parms">參數(shù)</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <returns>DataSet</returns>
    public static DataSet QueryDataSet(string database, string sql, SqlParameter[] parms, CommandType cmdType)
    {
      if (string.IsNullOrEmpty(database))
      {
        throw new Exception("未設置參數(shù):database");
      }
      if (string.IsNullOrEmpty(sql))
      {
        throw new Exception("未設置參數(shù):sql");
      }

      try
      {
        using (SqlConnection conn = GetConnection(database))
        {
          conn.Open();

          using (SqlCommand cmd = GetCommand(conn, null, cmdType, sql, parms))
          {
            using (SqlDataAdapter da = new SqlDataAdapter(cmd))
            {
              DataSet ds = new DataSet();
              da.Fill(ds);
              return ds;
            }
          }
        }
      }
      catch (SqlException ex)
      {
        System.Text.StringBuilder log = new System.Text.StringBuilder();
        log.Append("查詢數(shù)據出錯:");
        log.Append(ex);
        throw new Exception(log.ToString());
      }
    }

    /// <summary>
    /// 執(zhí)行命令獲取唯一值(第一行第一列)
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="parms">參數(shù)</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <returns>獲取值</returns>
    public static object QueryScalar(string database, string sql, SqlParameter[] parms, CommandType cmdType)
    {
      if (string.IsNullOrEmpty(database))
      {
        throw new Exception("未設置參數(shù):database");
      }
      if (string.IsNullOrEmpty(sql))
      {
        throw new Exception("未設置參數(shù):sql");
      }
      try
      {
        using (SqlConnection conn = GetConnection(database))
        {
          conn.Open();

          using (SqlCommand cmd = GetCommand(conn, null, cmdType, sql, parms))
          {
            return cmd.ExecuteScalar();
          }
        }
      }
      catch (SqlException ex)
      {
        System.Text.StringBuilder log = new System.Text.StringBuilder();
        log.Append("處理出錯:");
        log.Append(ex);
        throw new Exception(log.ToString());
      }
    }

    /// <summary>
    /// 執(zhí)行命令更新數(shù)據
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="parms">參數(shù)</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <returns>更新的行數(shù)</returns>
    public static int Execute(string database, string sql, SqlParameter[] parms, CommandType cmdType)
    {
      if (string.IsNullOrEmpty(database))
      {
        throw new Exception("未設置參數(shù):database");
      }
      if (string.IsNullOrEmpty(sql))
      {
        throw new Exception("未設置參數(shù):sql");
      }

      //返回(增刪改)的更新行數(shù)
      int count = 0;

      try
      {
        using (SqlConnection conn = GetConnection(database))
        {
          conn.Open();

          using (SqlCommand cmd = GetCommand(conn, null, cmdType, sql, parms))
          {
            if (cmdType == CommandType.StoredProcedure)
              cmd.Parameters.AddWithValue("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue;

            count = cmd.ExecuteNonQuery();

            if (count <= 0)
              if (cmdType == CommandType.StoredProcedure)
                count = (int)cmd.Parameters["@RETURN_VALUE"].Value;
          }
        }
      }
      catch (SqlException ex)
      {
        System.Text.StringBuilder log = new System.Text.StringBuilder();
        log.Append("處理出錯:");
        log.Append(ex);
        throw new Exception(log.ToString());
      }
      return count;
    }

    /// <summary>
    /// 查詢數(shù)據,返回DataTable
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <param name="values">參數(shù)</param>
    /// <returns>DataTable</returns>
    public static DataTable QueryDataTable(string database, string sql, CommandType cmdType, IDictionary<string, object> values)
    {
      SqlParameter[] parms = DicToParams(values);
      return QueryDataTable(database, sql, parms, cmdType);
    }

    /// <summary>
    /// 執(zhí)行存儲過程查詢數(shù)據,返回DataSet
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <param name="values">參數(shù)
    /// <returns>DataSet</returns>
    public static DataSet QueryDataSet(string database, string sql, CommandType cmdType, IDictionary<string, object> values)
    {
      SqlParameter[] parms = DicToParams(values);
      return QueryDataSet(database, sql, parms, cmdType);
    }

    /// <summary>
    /// 執(zhí)行命令獲取唯一值(第一行第一列)
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <param name="values">參數(shù)</param>
    /// <returns>唯一值</returns>
    public static object QueryScalar(string database, string sql, CommandType cmdType, IDictionary<string, object> values)
    {
      SqlParameter[] parms = DicToParams(values);
      return QueryScalar(database, sql, parms, cmdType);
    }

    /// <summary>
    /// 執(zhí)行命令更新數(shù)據
    /// </summary>
    /// <param name="database">數(shù)據庫</param>
    /// <param name="sql">SQL語句或存儲過程名</param>
    /// <param name="cmdType">查詢類型(SQL語句/存儲過程名)</param>
    /// <param name="values">參數(shù)</param>
    /// <returns>更新的行數(shù)</returns>
    public static int Execute(string database, string sql, CommandType cmdType, IDictionary<string, object> values)
    {
      SqlParameter[] parms = DicToParams(values);
      return Execute(database, sql, parms, cmdType);
    }

    /// <summary>
    /// 創(chuàng)建參數(shù)
    /// </summary>
    /// <param name="name">參數(shù)名</param>
    /// <param name="type">參數(shù)類型</param>
    /// <param name="size">參數(shù)大小</param>
    /// <param name="direction">參數(shù)方向(輸入/輸出)</param>
    /// <param name="value">參數(shù)值</param>
    /// <returns>新參數(shù)對象</returns>
    public static SqlParameter[] DicToParams(IDictionary<string, object> values)
    {
      if (values == null) return null;

      SqlParameter[] parms = new SqlParameter[values.Count];
      int index = 0;
      foreach (KeyValuePair<string, object> kv in values)
      {
        SqlParameter parm = null;
        if (kv.Value == null)
        {
          parm = new SqlParameter(kv.Key, DBNull.Value);
        }
        else
        {
          Type t = kv.Value.GetType();
          parm = new SqlParameter(kv.Key, NetToSql(kv.Value.GetType()));
          parm.Value = kv.Value;
        }

        parms[index++] = parm;
      }
      return parms;
    }


    /// <summary>
    /// .net類型轉換為Sql類型
    /// </summary>
    /// <param name="t">.net類型</param>
    /// <returns>Sql類型</returns>
    public static SqlDbType NetToSql(Type t)
    {
      SqlDbType dbType = SqlDbType.Variant;
      switch (t.Name)
      {
        case "Int16":
          dbType = SqlDbType.SmallInt;
          break;
        case "Int32":
          dbType = SqlDbType.Int;
          break;
        case "Int64":
          dbType = SqlDbType.BigInt;
          break;
        case "Single":
          dbType = SqlDbType.Real;
          break;
        case "Decimal":
          dbType = SqlDbType.Decimal;
          break;

        case "Byte[]":
          dbType = SqlDbType.VarBinary;
          break;
        case "Boolean":
          dbType = SqlDbType.Bit;
          break;
        case "String":
          dbType = SqlDbType.NVarChar;
          break;
        case "Char[]":
          dbType = SqlDbType.Char;
          break;
        case "DateTime":
          dbType = SqlDbType.DateTime;
          break;
        case "DateTime2":
          dbType = SqlDbType.DateTime2;
          break;
        case "DateTimeOffset":
          dbType = SqlDbType.DateTimeOffset;
          break;
        case "TimeSpan":
          dbType = SqlDbType.Time;
          break;
        case "Guid":
          dbType = SqlDbType.UniqueIdentifier;
          break;
        case "Xml":
          dbType = SqlDbType.Xml;
          break;
        case "Object":
          dbType = SqlDbType.Variant;
          break;
      }
      return dbType;
    }

  }

可以直接這樣調用: 

IDictionary<string, object> values = new Dictionary<string, object>();
 values.Add("@UserName", UserName);      
 values.Add("@PassWord", passWord);
 object Scalar = SQLHelper.QueryScalar(SQLHelper.BestNet, SQLHelper.UserInfoCURD, CommandType.StoredProcedure, values);  

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C#使用OpenCvSharp實現(xiàn)圖像校正

    C#使用OpenCvSharp實現(xiàn)圖像校正

    這篇文章主要為大家詳細介紹了C#如何使用OpenCvSharp實現(xiàn)圖像校正功能,文中的示例代碼簡潔易懂,具有一定的學習價值,需要的小伙伴可以參考下
    2023-11-11
  • c#和sql如何獲得時間間隔的方法

    c#和sql如何獲得時間間隔的方法

    這篇文章主要介紹了c#和sql如何獲得時間間隔的方法,有需要的朋友可以參考一下
    2013-12-12
  • C#通過cmd調用7z軟件實現(xiàn)壓縮和解壓文件

    C#通過cmd調用7z軟件實現(xiàn)壓縮和解壓文件

    這篇文章介紹了C#通過cmd調用7z軟件實現(xiàn)壓縮和解壓文件的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • Unity實現(xiàn)物體弧線運動到規(guī)定的坐標

    Unity實現(xiàn)物體弧線運動到規(guī)定的坐標

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)物體以弧線的形式運動到規(guī)定的坐標,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C# 委托(delegate) 的小例子

    C# 委托(delegate) 的小例子

    利用委托(delegate)好像也能解決避免大量switch case的代碼。
    2013-03-03
  • Entity Framework主從表的增刪改

    Entity Framework主從表的增刪改

    這篇文章介紹了Entity Framework主從表的增刪改,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實現(xiàn)JSON解析器MojoUnityJson功能(簡單且高效)

    C#實現(xiàn)JSON解析器MojoUnityJson功能(簡單且高效)

    MojoUnityJson 是使用C#實現(xiàn)的JSON解析器 ,算法思路來自于游戲引擎Mojoc的C語言實現(xiàn) Json.h。這篇文章主要介紹了C#實現(xiàn)JSON解析器MojoUnityJson的方法,需要的朋友可以參考下
    2018-01-01
  • C#編程實現(xiàn)取整和取余的方法

    C#編程實現(xiàn)取整和取余的方法

    這篇文章主要介紹了C#編程實現(xiàn)取整和取余的方法,結合實例形式分析了C#中Math.Celling與Math.Floor函數(shù)的相關使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 詳解Unity安卓共享紋理

    詳解Unity安卓共享紋理

    本文主要介紹了Unity安卓共享紋理,對此感興趣的同學,可以參考下,親自實驗一下,理解其原理。
    2021-05-05
  • WPF實現(xiàn)基礎控件之托盤的示例代碼

    WPF實現(xiàn)基礎控件之托盤的示例代碼

    這篇文章主要為大家詳細介紹了如何利用WPF實現(xiàn)托盤這一基礎控件,文中的示例代碼講解詳細,對我們學習或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-10-10

最新評論