1
using
System;
2
using
System.Configuration;
3
using
System.Data;
4
using
System.Data.SqlClient;
5
using
System.Collections;
6![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
7
namespace
Logindemo.SQLserver
8![](http://www.51aspx.com/images/OutliningIndicators/ExpandedBlockStart.gif)
...
{
9![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// download from www.51aspx.com(51aspx.com)
10![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
11
/// <summary>
12
/// SqlHelper类是专门提供给广大用户用于高性能、可升级和最佳练习的sql数据操作
13
/// </summary>
14
public abstract class SqlHelper
15![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
16![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
17
//数据库连接字符串
18
public static readonly string Con = System.Configuration.ConfigurationManager.AppSettings["SQLServer"];
19![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
20
// 用于缓存参数的HASH表
21
private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
22![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
23![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
24
/// 给定连接的数据库用假设参数执行一个sql命令(不返回数据集)
25
/// </summary>
26
/// <param name="connectionString">一个有效的连接字符串</param>
27
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
28
/// <param name="commandText">存储过程名称或者sql命令语句</param>
29
/// <param name="commandParameters">执行命令所用参数的集合</param>
30
/// <returns>执行命令所影响的行数</returns>
31
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
32![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
33![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
34
SqlCommand cmd = new SqlCommand();
35![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
36
using (SqlConnection conn = new SqlConnection(connectionString))
37![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
38
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
39
int val = cmd.ExecuteNonQuery();
40
cmd.Parameters.Clear();
41
return val;
42
}
43
}
44![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
45![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
46
/// 用现有的数据库连接执行一个sql命令(不返回数据集)
47
/// </summary>
48
/// <param name="conn">一个现有的数据库连接</param>
49
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
50
/// <param name="commandText">存储过程名称或者sql命令语句</param>
51
/// <param name="commandParameters">执行命令所用参数的集合</param>
52
/// <returns>执行命令所影响的行数</returns>
53
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
54![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
55![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
56
SqlCommand cmd = new SqlCommand();
57![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
58
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
59
int val = cmd.ExecuteNonQuery();
60
cmd.Parameters.Clear();
61
return val;
62
}
63![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
64![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
65
///使用现有的SQL事务执行一个sql命令(不返回数据集)
66
/// </summary>
67
/// <remarks>
68
///举例:
69
/// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
70
/// </remarks>
71
/// <param name="trans">一个现有的事务</param>
72
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
73
/// <param name="commandText">存储过程名称或者sql命令语句</param>
74
/// <param name="commandParameters">执行命令所用参数的集合</param>
75
/// <returns>执行命令所影响的行数</returns>
76
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
77![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
78
SqlCommand cmd = new SqlCommand();
79
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
80
int val = cmd.ExecuteNonQuery();
81
cmd.Parameters.Clear();
82
return val;
83
}
84![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
85![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
86
/// 用执行的数据库连接执行一个返回数据集的sql命令
87
/// </summary>
88
/// <remarks>
89
/// 举例:
90
/// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
91
/// </remarks>
92
/// <param name="connectionString">一个有效的连接字符串</param>
93
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
94
/// <param name="commandText">存储过程名称或者sql命令语句</param>
95
/// <param name="commandParameters">执行命令所用参数的集合</param>
96
/// <returns>包含结果的读取器</returns>
97
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
98![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
99
//创建一个SqlCommand对象
100
SqlCommand cmd = new SqlCommand();
101
//创建一个SqlConnection对象
102
SqlConnection conn = new SqlConnection(connectionString);
103![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
104
//在这里我们用一个try/catch结构执行sql文本命令/存储过程,因为如果这个方法产生一个异常我们要关闭连接,因为没有读取器存在,
105
//因此commandBehaviour.CloseConnection 就不会执行
106
try
107![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
108
//调用 PrepareCommand 方法,对 SqlCommand 对象设置参数
109
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
110
//调用 SqlCommand 的 ExecuteReader 方法
111
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
112
//清除参数
113
cmd.Parameters.Clear();
114
return reader;
115
}
116
catch
117![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
118
//关闭连接,抛出异常
119
conn.Close();
120
throw;
121
}
122
}
123![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
124![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
125
/// 用指定的数据库连接字符串执行一个命令并返回一个数据集的第一列
126
/// </summary>
127
/// <remarks>
128
///例如:
129
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
130
/// </remarks>
131
///<param name="connectionString">一个有效的连接字符串</param>
132
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
133
/// <param name="commandText">存储过程名称或者sql命令语句</param>
134
/// <param name="commandParameters">执行命令所用参数的集合</param>
135
/// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
136
public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
137![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
138
SqlCommand cmd = new SqlCommand();
139![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
140
using (SqlConnection connection = new SqlConnection(connectionString))
141![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
142
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
143
object val = cmd.ExecuteScalar();
144
cmd.Parameters.Clear();
145
return val;
146
}
147
}
148![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
149![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
150
/// 用指定的数据库连接执行一个命令并返回一个数据集的第一列
151
/// </summary>
152
/// <remarks>
153
/// 例如:
154
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
155
/// </remarks>
156
/// <param name="conn">一个存在的数据库连接</param>
157
/// <param name="commandType">命令类型(存储过程, 文本, 等等)</param>
158
/// <param name="commandText">存储过程名称或者sql命令语句</param>
159
/// <param name="commandParameters">执行命令所用参数的集合</param>
160
/// <returns>用 Convert.To{Type}把类型转换为想要的 </returns>
161
public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
162![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
163![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
164
SqlCommand cmd = new SqlCommand();
165![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
166
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
167
object val = cmd.ExecuteScalar();
168
cmd.Parameters.Clear();
169
return val;
170
}
171![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
172![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
173
/// 将参数集合添加到缓存
174
/// </summary>
175
/// <param name="cacheKey">添加到缓存的变量</param>
176
/// <param name="cmdParms">一个将要添加到缓存的sql参数集合</param>
177
public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)
178![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
179
parmCache[cacheKey] = commandParameters;
180
}
181![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
182![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
183
/// 找回缓存参数集合
184
/// </summary>
185
/// <param name="cacheKey">用于找回参数的关键字</param>
186
/// <returns>缓存的参数集合</returns>
187
public static SqlParameter[] GetCachedParameters(string cacheKey)
188![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
189
SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
190![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
191
if (cachedParms == null)
192
return null;
193![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
194
SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];
195![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
196
for (int i = 0, j = cachedParms.Length; i < j; i++)
197
clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
198![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
199
return clonedParms;
200
}
201![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
202![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
203
/// 准备执行一个命令
204
/// </summary>
205
/// <param name="cmd">sql命令</param>
206
/// <param name="conn">Sql连接</param>
207
/// <param name="trans">Sql事务</param>
208
/// <param name="cmdType">命令类型例如 存储过程或者文本</param>
209
/// <param name="cmdText">命令文本,例如:Select * from Products</param>
210
/// <param name="cmdParms">执行命令的参数</param>
211
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
212![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
213![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
214
if (conn.State != ConnectionState.Open)
215
conn.Open();
216![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
217
cmd.Connection = conn;
218
cmd.CommandText = cmdText;
219![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
220
if (trans != null)
221
cmd.Transaction = trans;
222![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
223
cmd.CommandType = cmdType;
224![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
225
if (cmdParms != null)
226![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
...{
227
foreach (SqlParameter parm in cmdParms)
228
cmd.Parameters.Add(parm);
229
}
230
}
231
}
232
}
![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
2
![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
3
![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
4
![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
6
![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
7
![](http://www.51aspx.com/images/OutliningIndicators/None.gif)
8
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedBlock.gif)
9
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
10
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
11
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
12
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
13
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
15
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
16
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
17
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
18
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
19
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
20
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
21
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
22
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
23
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
24
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
25
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
26
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
27
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
28
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
29
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
30
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
32
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
33
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
34
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
35
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
36
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
37
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
38
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
39
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
40
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
41
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
42
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
45
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
46
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
47
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
48
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
49
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
50
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
51
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
52
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
54
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
55
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
56
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
57
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
58
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
59
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
60
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
61
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
62
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
63
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
64
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
65
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
66
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
67
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
68
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
69
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
70
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
71
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
72
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
73
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
74
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
75
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
76
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
77
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
78
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
79
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
80
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
81
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
82
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
83
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
84
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
85
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
86
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
87
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
88
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
89
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
90
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
91
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
92
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
93
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
94
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
95
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
96
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
97
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
98
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
99
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
100
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
101
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
102
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
103
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
104
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
105
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
106
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
107
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
108
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
109
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
110
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
111
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
112
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
113
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
114
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
115
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
117
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
118
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
119
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
120
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
121
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
122
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
123
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
124
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
125
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
126
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
127
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
128
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
129
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
130
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
131
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
132
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
133
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
134
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
135
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
136
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
137
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
138
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
139
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
140
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
141
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
142
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
143
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
144
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
145
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
146
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
147
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
148
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
149
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
150
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
151
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
152
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
153
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
154
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
155
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
156
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
157
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
158
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
159
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
160
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
161
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
162
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
163
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
164
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
165
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
166
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
167
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
168
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
169
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
170
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
171
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
172
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
173
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
174
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
175
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
176
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
177
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
178
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
179
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
180
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
181
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
182
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
183
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
184
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
185
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
186
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
187
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
188
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
189
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
190
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
191
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
192
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
193
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
194
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
195
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
196
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
197
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
198
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
199
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
200
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
201
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
202
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
203
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
204
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
205
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
206
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
207
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
208
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
209
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
210
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
211
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
212
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
213
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
214
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
215
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
216
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
217
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
218
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
219
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
220
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
221
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
222
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
223
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
224
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
225
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
226
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.51aspx.com/images/OutliningIndicators/ContractedSubBlock.gif)
227
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
228
![](http://www.51aspx.com/images/OutliningIndicators/InBlock.gif)
229
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
230
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
231
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif)
232
![](http://www.51aspx.com/images/OutliningIndicators/ExpandedBlockEnd.gif)