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 }
原文:http://www.cnblogs.com/superxuezhazha/p/5191005.html