SoftSqlOperate.cs
9.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
#if !NETSTANDARD2_0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
#if NET45
using System.Threading.Tasks;
#endif
namespace HslCommunication.BasicFramework
{
//=================================================================================================
//
// 创建时间:2017年09月03日 20:56:18
// 有关数据库操作的方法,进行总结精简,提供了三个非常常用的方法方便调用
//
//=================================================================================================
/// <summary>
/// 数据库操作的相关类,包含了常用的方法,避免大量的重复代码
/// </summary>
public static class SoftSqlOperate
{
/// <summary>
/// 普通的执行SQL语句,并返回影响行数,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conStr">数据库的连接字符串</param>
/// <param name="cmdStr">sql语句,适合插入,更新,删除</param>
/// <returns>返回受影响的行数</returns>
/// <exception cref="SqlException"></exception>
public static int ExecuteSql(string conStr, string cmdStr)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
return ExecuteSql(conn, cmdStr);
}
}
/// <summary>
/// 普通的执行SQL语句,并返回影响行数,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conn">数据库的连接对象</param>
/// <param name="cmdStr">sql语句,适合插入,更新,删除</param>
/// <returns>返回受影响的行数</returns>
/// <exception cref="SqlException"></exception>
public static int ExecuteSql(SqlConnection conn, string cmdStr)
{
using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
{
return cmd.ExecuteNonQuery();
}
}
/// <summary>
/// 选择数据表的执行SQL语句,并返回最终数据表,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conStr">数据库的连接字符串</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>结果数据表</returns>
/// <exception cref="SqlException"></exception>
/// <exception cref="InvalidOperationException"></exception>
public static DataTable ExecuteSelectTable(string conStr, string cmdStr)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
return ExecuteSelectTable(conn, cmdStr);
}
}
/// <summary>
/// 选择数据表的执行SQL语句,并返回最终数据表,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conn">数据库连接对象</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>结果数据表</returns>
/// <exception cref="SqlException"></exception>
public static DataTable ExecuteSelectTable(SqlConnection conn, string cmdStr)
{
using (SqlDataAdapter sda = new SqlDataAdapter(cmdStr, conn))
{
using (DataSet ds = new DataSet())
{
sda.Fill(ds);
return ds.Tables[0];
}
}
}
/// <summary>
/// 选择指定类型数据集合执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conStr">数据库的连接字符串</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>结果数据集合</returns>
/// <exception cref="SqlException"></exception>
/// <exception cref="InvalidOperationException"></exception>
public static List<T> ExecuteSelectEnumerable<T>(string conStr, string cmdStr) where T : ISqlDataType, new()
{
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
return ExecuteSelectEnumerable<T>(conn, cmdStr);
}
}
/// <summary>
/// 选择指定类型数据集合执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conn">数据库的连接对象</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>结果数据集合</returns>
/// <exception cref="SqlException"></exception>
/// <exception cref="InvalidOperationException"></exception>
public static List<T> ExecuteSelectEnumerable<T>(SqlConnection conn, string cmdStr) where T : ISqlDataType, new()
{
using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
{
using (SqlDataReader sdr = cmd.ExecuteReader())
{
List<T> list = new List<T>();
while (sdr.Read())
{
T item = new T();
item.LoadBySqlDataReader(sdr);
list.Add(item);
}
return list;
}
}
}
/// <summary>
/// 更新指定类型数据执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conStr">数据库的连接字符串</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>结果数据</returns>
/// <exception cref="SqlException"></exception>
/// <exception cref="InvalidOperationException"></exception>
public static T ExecuteSelectObject<T>(string conStr, string cmdStr) where T : ISqlDataType, new()
{
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
return ExecuteSelectObject<T>(conn, cmdStr);
}
}
/// <summary>
/// 更新指定类型数据执行SQL语句,并返回指定类型的数据集合,该方法应该放到try-catch代码块中
/// </summary>
/// <param name="conn">数据库的连接对象</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>结果数据</returns>
/// <exception cref="SqlException"></exception>
/// <exception cref="InvalidOperationException"></exception>
public static T ExecuteSelectObject<T>(SqlConnection conn, string cmdStr) where T : ISqlDataType, new()
{
using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
{
using (SqlDataReader sdr = cmd.ExecuteReader())
{
if (sdr.Read())
{
T item = new T();
item.LoadBySqlDataReader(sdr);
return item;
}
else
{
return default(T);
}
}
}
}
/// <summary>
/// 用于选择聚合函数值的方法,例如Count,Average,Max,Min,Sum等最终只有一个结果值的对象
/// </summary>
/// <param name="conStr">数据库的连接字符串</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>返回的int数据</returns>
public static int ExecuteSelectCount(string conStr, string cmdStr)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
return ExecuteSelectCount(conn, cmdStr);
}
}
/// <summary>
/// 用于选择聚合函数值的方法,例如Count,Average,Max,Min,Sum等最终只有一个结果值的对象
/// </summary>
/// <param name="conn">数据库的连接对象</param>
/// <param name="cmdStr">sql语句,选择数据表的语句</param>
/// <returns>返回的int数据</returns>
public static int ExecuteSelectCount(SqlConnection conn, string cmdStr)
{
using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
{
int temp = 0;
SqlDataReader sdr = cmd.ExecuteReader();
if (sdr.Read())
{
temp = Convert.ToInt32(sdr[0]);
}
sdr.Close();
return temp;
}
}
}
/// <summary>
/// 数据库对应类的读取接口
/// </summary>
public interface ISqlDataType
{
/// <summary>
/// 根据sdr对象初始化数据的方法
/// </summary>
/// <param name="sdr">数据库reader对象</param>
void LoadBySqlDataReader(SqlDataReader sdr);
}
}
#endif