KeeSoft.DBHelper.DBFactory 数据库访问类
生活随笔
收集整理的這篇文章主要介紹了
KeeSoft.DBHelper.DBFactory 数据库访问类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
/*----------------------------------------------------------------Copyright (C) 2016 KeeSoft文件名:DBFactory.cs文件功能描述:數據庫操作基礎類創建標識:KeeSoft - 20161012 ----------------------------------------------------------------*/using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient;namespace KeeSoft.DBHelper {/// <summary>/// 數據庫基本操作工廠/// </summary>public class DBFactory{//全局連接代碼private static string GlobalConnection = "Server=.;Initial Catalog={0};User ID=sa;Password=123";//哈希表存儲緩存參數private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());/// <summary>/// 通過SQL命令進行數據庫操作/// </summary>/// <param name="_dataname">數據庫名</param>/// <param name="commandType">命令類型</param>/// <param name="commandText">命令語句</param>/// <param name="commandParameters">參數化查詢時,參數數組</param>/// <returns>返回受影響的行數</returns>public static int ExecuteNonQuery(string _dataname, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();using (SqlConnection conn = new SqlConnection(string.Format(GlobalConnection,_dataname))){PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);int val = cmd.ExecuteNonQuery();cmd.Parameters.Clear();return val;}}/// <summary>/// 通過SQL讀取命令 游標讀取數據/// </summary>/// <param name="_dataname">數據庫名</param>/// <param name="commandType">命令類型</param>/// <param name="commandText">命令語句</param>/// <param name="commandParameters">參數化查詢時,參數數組</param>/// <returns>返回一個 SqlDataReader類</returns>public static SqlDataReader ExecuteReader(string _dataname, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();SqlConnection conn = new SqlConnection(string.Format(GlobalConnection, _dataname));try{PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);cmd.Parameters.Clear();return rdr;}catch{conn.Close();throw;}}/// <summary>/// 通過SQL讀取命令 數據存入DataSet/// </summary>/// <param name="_dataname">數據庫名</param>/// <param name="commandType">命令類型</param>/// <param name="commandText">命令語句</param>/// <param name="commandParameters">參數化查詢時,參數數組</param>/// <returns>返回一個 SqlDataReader類</returns>public static DataSet GetDataSet(string _dataname, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();SqlConnection conn = new SqlConnection(string.Format(GlobalConnection, _dataname));PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);SqlDataAdapter doa = new SqlDataAdapter(cmd);DataSet ds = new DataSet();doa.Fill(ds);return ds;}/// <summary>/// 通過SQL讀取命令 數據存入DataSet/// </summary>/// <param name="_dataname">數據庫名</param>/// <param name="_sql">命令語句</param>/// <returns></returns>public static DataSet GetDataSet(string _dataname, string _sql){return GetDataSet(_dataname, CommandType.Text, _sql);}/// <summary>/// 通過SQL命令 返回第一行第一列的值/// </summary>/// <remarks>/// e.g.: /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));/// </remarks>/// <param name="connectionString">a valid connection string for a SqlConnection</param>/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>/// <param name="commandText">the stored procedure name or T-SQL command</param>/// <param name="commandParameters">an array of SqlParamters used to execute the command</param>/// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>public static object ExecuteScalar(string _dataname, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();using (SqlConnection connection = new SqlConnection(string.Format(GlobalConnection, _dataname))){PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);object val = cmd.ExecuteScalar();cmd.Parameters.Clear();return val;}}/// <summary>/// add parameter array to the cache/// </summary>/// <param name="cacheKey">Key to the parameter cache</param>/// <param name="cmdParms">an array of SqlParamters to be cached</param>public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters){parmCache[cacheKey] = commandParameters;}/// <summary>/// Retrieve cached parameters/// </summary>/// <param name="cacheKey">key used to lookup parameters</param>/// <returns>Cached SqlParamters array</returns>public static SqlParameter[] GetCachedParameters(string cacheKey){SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];if (cachedParms == null)return null;SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];for (int i = 0, j = cachedParms.Length; i < j; i++)clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();return clonedParms;}/// <summary>/// Prepare a command for execution/// </summary>/// <param name="cmd">SqlCommand object</param>/// <param name="conn">SqlConnection object</param>/// <param name="trans">SqlTransaction object</param>/// <param name="cmdType">Cmd type e.g. stored procedure or text</param>/// <param name="cmdText">Command text, e.g. Select * from Products</param>/// <param name="cmdParms">SqlParameters to use in the command</param>private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms){if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;cmd.CommandText = cmdText;if (trans != null)cmd.Transaction = trans;cmd.CommandType = cmdType;if (cmdParms != null){foreach (SqlParameter parm in cmdParms)cmd.Parameters.Add(parm);}}} }?
轉載于:https://my.oschina.net/kee1986/blog/791887
總結
以上是生活随笔為你收集整理的KeeSoft.DBHelper.DBFactory 数据库访问类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json和jsonp(json是目的,j
- 下一篇: openstack-mitaka之Tel