helpDB

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Data.SqlClient;//连接数据库必须的
  6 using System.Configuration;
  7 using System.Data.Sql;
  8 using System.Data.SqlClient;
  9 using System.Data;
 10 
 11 /// <summary>
 12 /// sqlHelp 的摘要说明
 13 /// 数据库访问助手类
 14 /// </summary>
 15 public class sqlHelp
 16 {
 17     //获取数据库连接字符串,属于静态只读变量,项目中所有文档都可以直接使用但是不能更改
 18     public static readonly string ConnectionStringLcalTransaction = ConfigurationManager.ConnectionStrings["stdInfoConnectionString"].ConnectionString;
 19     /// <summary>
 20     /// 执行一个不需要返回值的sqlcommand命令,通过制定专用的连接字符串
 21     /// 使用参数组形式提供参数列表
 22     /// </summary>
 23     /// <remarks>
 24     /// 使用示例:
 25     /// int result=ExecuteNonQuery(connString,CommandType.StoreProcedure,"PublishOrders",new SqlParameter("@prodid",24));
 26     /// </remarks>
 27     /// <param name="connectionString">一个有效数据库链接字符串</param>
 28     /// <param name="commandType">SqlCommand命令类型(存储过程,T-SQL语句等)</param>
 29     /// <param name="commandText">存储过程的名字或者T-SQL语句</param>
 30     /// <param name="commandParameters">以数组的形式提供sqlcommand命令中用到的参数列表</param>
 31     /// <returns>返回一个数值表表示此sqlcommand语句命令后影响的行数</returns>
 32     public static int ExecuteNoneQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
 33     {
 34         SqlCommand cmd = new SqlCommand();
 35         using (SqlConnection conn = new SqlConnection(connectionString)) 
 36         {
 37             //通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
 38             PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
 39             int val = cmd.ExecuteNonQuery();
 40             //清空SqlCommand中的参数列表
 41             cmd.Parameters.Clear();
 42             return val;
 43         }
 44     }
 45     /// <summary>
 46     /// 执行一条返回结果集的SqlCommand命令,通过换用连接字符串
 47     /// 使用参数数组提供参数
 48     /// </summary>
 49     /// <remarks>
 50     /// 使用示例:
 51     /// SqlDataReader r=EcecuteReader(connString,CommandType.StoredProcedure,"PublishOrders",new SleParameter("@prodid",24));
 52     /// </remarks>
 53     /// <param name="connectionSting">一个有效的数据库连接字符串</param>
 54     /// <param name="commandType">SqlCommand命令类型(存储过程,T-SQL语句等)</param>
 55     /// <param name="comandText">存储过程的名字或者T-SQL语句</param>
 56     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
 57     /// <returns>返回一个包含结果的SqlDataReader</returns>
 58     public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType,string cmdText,params SqlParameter[] commandParameters)
 59     {
 60         SqlCommand cmd = new SqlCommand();
 61         SqlConnection conn = new SqlConnection(connectionString);
 62         //使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在,
 63         //触发的异常由catch捕获。
 64         //关闭数据连接,并通过throw再次引发捕捉到的异常
 65         try
 66         {
 67             PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
 68             SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
 69             cmd.Parameters.Clear();
 70             return rdr;
 71         }
 72         catch
 73         {
 74             conn.Close();
 75             throw;
 76         }
 77     }
 78     /// <summary>
 79     /// 执行一条返回第一条记录第一列的SqlCommand命令,通过专用的连接字符串
 80     /// 使用参数数组提供参数
 81     /// </summary>
 82     /// <remarks>
 83     /// 使用示例:
 84     /// Object obj=ExecuteScalar(connString,CommandType.StoredProcedure,"PublishOrders",new SqlParameter("@prodid",24));
 85     /// </remarks>
 86     /// <param name="connectionSting">一个有效的数据库连接字符串</param>
 87     /// <param name="commandType">SqlCommand命令类型(存储过程,T-SQL语句等)</param>
 88     /// <param name="comandText">存储过程的名字或者T-SQL语句</param>
 89     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>
 90     /// <returns>返回一个object类型的数据,可以通过Conver.To{Type}方法转换类型</returns>
 91     public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
 92     {
 93         SqlCommand cmd = new SqlCommand();
 94         using (SqlConnection connection = new SqlConnection(connectionString))
 95         {
 96             PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
 97             object val = cmd.ExecuteScalar();
 98             cmd.Parameters.Clear();
 99             return val;
100         }
101     }
102     /// <summary>
103     /// 为执行命令准备参数
104     /// </summary>
105     /// <param name="cmd">SqlCommand命令</param>
106     /// <param name="conn">已存在的数据库连接</param>
107     /// <param name="trans">数据库事物处理</param>
108     /// <param name="cmdType">SqlCommand命令类型(存储过程,T-SQL语句等)</param>
109     /// <param name="cmdText">Cmmand text,T-SQL语句 
110     /// 例如:Select * from Products
111     /// </param>
112     /// <param name="cmdParms">返回带参数的命令</param>
113     private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText,SqlParameter[]cmdParms)
114     {
115         //判断数据库连接状态
116         if (conn.State != ConnectionState.Open)
117             conn.Open();
118         cmd.Connection = conn;
119         cmd.CommandText = cmdText;
120         //判断是否需要事物处理
121         if (trans != null)
122             cmd.Transaction = trans;
123         cmd.CommandType = cmdType;
124         if (cmdParms != null)
125         {
126             foreach (SqlParameter parm in cmdParms)
127                 cmd.Parameters.Add(parm);
128         }
129     }
130     public sqlHelp()
131     {
132         //
133         // TODO: 在此处添加构造函数逻辑
134         //
135     }
136 }
原文地址:https://www.cnblogs.com/superxuezhazha/p/5191005.html