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 }