微软SqlServerHelper
2016-01-22 15:40
561 查看
1 第一种
第二种:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using System.Data; using System.Configuration;// 先引用 System.Configuration namespace Common { /// <summary> /// 数据库访问辅助类,add by ngye, on 2013-08-14. /// </summary> public static class DBHelper { #region [ Tools ] //public static string ConnectionString = ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString; public static string ConnectionString = "Data Source=leaf-home\\sqlserver2005;Initial Catalog=Test;Persist Security Info=True;User ID=??;Password=??"; public static SqlConnection GetConnection() { return new SqlConnection(ConnectionString); } public static SqlCommand AddTimeout(this SqlCommand cmd) { cmd.CommandTimeout = 3600; return cmd; } /// <summary> /// 执行cmd得到 DataTable. by ngye, on 2013-08-01 /// </summary> /// <param name="cmd"></param> /// <returns></returns> public static DataTable ExecuteDataTable(this SqlCommand cmd) { DataTable dt = new DataTable(); using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) { adapter.Fill(dt); } return dt; } /// <summary> /// 为SqlParameter设置参数. by ngye, on 2013-08-15. /// </summary> /// <param name="sp"></param> /// <returns></returns> public static SqlParameter SetValue(this SqlParameter sp, object value) { sp.Value = value; return sp; } /// <summary> /// 为SqlParameter设置类型. by ngye, on 2013-08-15. /// </summary> /// <param name="sp"></param> /// <returns></returns> public static SqlParameter SetDbType(this SqlParameter sp, DbType dbType) { sp.DbType = dbType; return sp; } #endregion #region [ ExecuteNonQuery_ForProc (无参/有参) ] ///// <summary> /// 根据存储过程,返回受影响行数 /// </summary> /// <param name="proc">proc</param> /// <returns>受影响行数</returns> public static int ExecuteNonQuery_ForProc(string proc) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout(); cmd.CommandType = CommandType.StoredProcedure; return cmd.ExecuteNonQuery(); } } ///// <summary> /// 根据存储过程和参数,返回受影响行数 /// </summary> /// <param name="proc">proc</param> /// <param name="spArr">可变参数</param> /// <returns>受影响行数</returns> public static int ExecuteNonQuery_ForProc(string proc, params SqlParameter[] spArr) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(spArr); return cmd.ExecuteNonQuery(); } } #endregion #region [ ExecuteNonQuery (无参/有参) ] ///// <summary> /// 根据sql语句,返回受影响行数 /// </summary> /// <param name="sql">sql语句</param> /// <returns>受影响行数</returns> public static int ExecuteNonQuery(string sql) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout(); return cmd.ExecuteNonQuery(); } } ///// <summary> /// 根据sql语句和参数,返回受影响行数 /// </summary> /// <param name="sql">sql语句</param> /// <param name="spArr">可变参数</param> /// <returns>受影响行数</returns> public static int ExecuteNonQuery(string sql, params SqlParameter[] spArr) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout(); cmd.Parameters.AddRange(spArr); return cmd.ExecuteNonQuery(); } } #endregion #region [ ExecuteScalar (无参/有参) ] /// <summary> /// 根据sql语句,返回Scalar结果 /// </summary> /// <param name="sql">sql语句</param> /// <returns>object</returns> public static object ExecuteScalar(string sql) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout(); object obj = cmd.ExecuteScalar(); return obj; } } /// <summary> /// 根据sql语句和参数,返回Scalar结果 /// </summary> /// <param name="sql">sql语句</param> /// <param name="spArr">可变参数</param> /// <returns>object</returns> public static object ExecuteScalar(string sql, params SqlParameter[] spArr) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout(); cmd.Parameters.AddRange(spArr); object obj = cmd.ExecuteScalar(); return obj; } } #endregion #region [ QueryByProc (无参/有参) ] /// <summary> /// 根据存储过程,返回DataTable /// </summary> /// <param name="proc">proc</param> /// <returns>DataTable</returns> public static DataTable GetDataTableByProc(string proc) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout(); cmd.CommandType = CommandType.StoredProcedure; DataTable dt = cmd.ExecuteDataTable(); return dt; } } /// <summary> /// 根据存储过程及参数,返回DataTable /// </summary> /// <returns>DataTable</returns> public static DataTable GetDataTableByProc(string proc, params SqlParameter[] spArr) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(proc, conn).AddTimeout(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(spArr); DataTable dt = cmd.ExecuteDataTable(); return dt; } } #endregion #region [ Query (无参) ] /// <summary> /// 根据sql语句和参数,返回DataTable /// </summary> /// <param name="sql">sql语句</param> /// <returns>DataTable</returns> public static DataTable GetDataTableBySql(string sql) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout(); DataTable dt = cmd.ExecuteDataTable(); return dt; } } /// <summary> /// 根据sql语句,返回DataRow /// </summary> /// <param name="sql">sql语句</param> /// <returns>DataRow</returns> public static DataRow GetDataRowBySql(string sql) { DataTable dt = GetDataTableBySql(sql); if (dt == null || dt.Rows.Count == 0) return null; return dt.Rows[0]; } #endregion #region [ Query (有参) ] /// <summary> /// 根据sql语句和参数,返回DataTable /// </summary> /// <param name="sql">sql语句</param> /// <param name="spArr">可变参数</param> /// <returns>DataTable</returns> public static DataTable GetDataTableBySql(string sql, params SqlParameter[] spArr) { using (SqlConnection conn = GetConnection()) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn).AddTimeout(); cmd.Parameters.AddRange(spArr); DataTable dt = cmd.ExecuteDataTable(); return dt; } } /// <summary> /// 根据sql语句和参数,返回DataRow /// </summary> /// <param name="sql">sql语句</param> /// <param name="spArr">可变参数</param> /// <returns>DataRow</returns> public static DataRow GetDataRowBySql(string sql, params SqlParameter[] spArr) { DataTable dt = GetDataTableBySql(sql, spArr); if (dt == null || dt.Rows.Count==0) return null; return dt.Rows[0]; } #endregion }//end of class }//end of namespace
第二种:
//=============================================================================== // This file is based on the Microsoft Data Access Application Block for .NET // For more information please go to // http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp //=============================================================================== using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Collections; namespace FingerLink.Core.Communal { /// <summary> /// The SqlHelper class is intended to encapsulate high performance, /// scalable best practices for common uses of SqlClient. /// </summary> public class SqlServerHelper { //Database connection strings public static string connString = ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString; // Hashtable to store cached parameters private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); /// <summary> /// Execute a SqlCommand (that returns no resultset) against the database specified in the connection string /// using the provided parameters. /// </summary> /// <remarks> /// e.g.: /// int result = ExecuteNonQuery(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 int representing the number of rows affected by the command</returns> public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString)) { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } } /// <summary> /// Execute a SqlCommand (that returns no resultset) against an existing database connection /// using the provided parameters. /// </summary> /// <remarks> /// e.g.: /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="conn">an existing database connection</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 int representing the number of rows affected by the command</returns> public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } /// <summary> /// Execute a SqlCommand (that returns no resultset) using an existing SQL Transaction /// using the provided parameters. /// </summary> /// <remarks> /// e.g.: /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="trans">an existing sql transaction</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 int representing the number of rows affected by the command</returns> public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } /// <summary> /// Execute a SqlCommand that returns a resultset against the database specified in the connection string /// using the provided parameters. /// </summary> /// <remarks> /// e.g.: /// SqlDataReader r = ExecuteReader(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>A SqlDataReader containing the results</returns> public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); SqlConnection conn = new SqlConnection(connectionString); // we use a try/catch here because if the method throws an exception we want to // close the connection throw code, because no datareader will exist, hence the // commandBehaviour.CloseConnection will not work try { PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw; } } /// <summary> /// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string /// using the provided parameters. /// </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 connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection connection = new SqlConnection(connectionString)) { PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); object val = cmd.ExecuteScalar(); cmd.Parameters.Clear(); return val; } } /// <summary> /// Execute a SqlCommand that returns the first column of the first record against an existing database connection /// using the provided parameters. /// </summary> /// <remarks> /// e.g.: /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="conn">an existing database connection</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(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); 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); } } } }
相关文章推荐
- mysql中myisamchk命令使用总结
- MySql—解压缩版本的安装与配制
- vc获取Access/ SqlServer 获取主键
- sql基础05
- MySql的存储引擎
- sql语法:inner join on, left join on, right join on详细使用方法
- centos6.5下编译安装mariadb-10.0.20
- centos6.5下编译安装mariadb-10.0.20
- 六种删除数据库重复行的方法
- centos安装memcached
- 欢迎使用CSDN-markdown编辑器
- Oracle ORA-01034,ORA-27101,ORA-00600
- SQL Server中避免触发镜像SUSPEND的N种方法
- ORACLE 存储过程被锁,编译不了,怎么解锁?
- mysql安装一 --- 源码包安装
- 【转】oracle over函数详解
- EF+MySql
- shiro 权限验证 AuthorizingRealm doGetAuthorizationInfo
- oracle 数据库按照条件来统计数据记录
- oracle 根据子节点取出父节点sql