代码
1 //--名称:SQL数据库访问基类
2 //--功能:一般ADO.NET原理,数据装箱坼箱及通用数据库控件绑定
3 //--背景:快速开发,此类供页面直接调用
4
5 using System;
6 using System.Data;
7 using System.Data.SqlClient;
8 using System.Collections.Generic;
9 using System.Text;
10 using System.Configuration;
11 using System.Web.UI.WebControls;
12
13
14 namespace R.Lee
15 {
16 /// <summary>
17 /// 数据库访问基类(for SQL)
18 /// </summary>
19 public class DBHelper:IDisposable
20 {
21 #region 成员
22 private SqlConnection Conn = null;
23 private SqlTransaction tran = null;
24 /// <summary>
25 /// 事务标识
26 /// </summary>
27 public bool IsTran { get; set; }
28 #endregion
29
30 #region 构造函数,SqlConnection对象初始化
31 public DBHelper()
32 {
33 Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
34 }
35
36 public DBHelper(string ConnectionKey)
37 {
38 Conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConnectionKey].ConnectionString);
39 }
40 #endregion
41
42 #region 数据库事务
43 /// <summary>
44 /// 事务开始
45 /// </summary>
46 public void BeginTran()
47 {
48 OpenDB();
49 tran = Conn.BeginTransaction(IsolationLevel.ReadCommitted);
50 IsTran = true;
51 }
52
53 /// <summary>
54 /// 回滚事务
55 /// </summary>
56 public void RollbackTran()
57 {
58 tran.Rollback();
59 IsTran = false;
60 }
61
62 /// <summary>
63 /// 提交事务
64 /// </summary>
65 public void CommitTran()
66 {
67 tran.Commit();
68 IsTran = false;
69 }
70 #endregion
71
72 #region SqlParameter对象创建
73
74 private SqlParameter CreateSqlParameter(string paraName,DbType paraType,int paraSize, ParameterDirection paraDirection, object paraValue)
75 {
76 SqlParameter para = new SqlParameter();
77 para.DbType = paraType;
78 para.Direction = paraDirection;
79 para.ParameterName = paraName;
80 if (paraSize > 0)
81 {
82 para.Size = paraSize;
83 }
84 para.Value = paraValue;
85 return para;
86 }
87
88 public SqlParameter CreateInSqlParameter(string paraName, DbType paraType, object paraValue)
89 {
90 return CreateSqlParameter(paraName, paraType, 0, ParameterDirection.Input, paraValue);
91 }
92
93 public SqlParameter CreateInSqlParameter(string paraName, DbType paraType,int paraSize, object paraValue)
94 {
95 return CreateSqlParameter(paraName, paraType, paraSize, ParameterDirection.Input, paraValue);
96 }
97
98 public SqlParameter CreateOutSqlParameter(string paraName, DbType paraType, object paraValue)
99 {
100 return CreateSqlParameter(paraName, paraType, 0, ParameterDirection.Output, paraValue);
101 }
102
103 public SqlParameter CreateOutSqlParameter(string paraName, DbType paraType, int paraSize, object paraValue)
104 {
105 return CreateSqlParameter(paraName, paraType, paraSize, ParameterDirection.Output, paraValue);
106 }
107 #endregion
108
109 #region 常用ADO.NET方法
110 /// <summary>
111 /// OpenDB
112 /// </summary>
113 private void OpenDB()
114 {
115 if (Conn.State != ConnectionState.Open)
116 {
117 try
118 {
119 Conn.Open();
120 }
121 catch (SqlException ex)
122 {
123 throw ex;
124 }
125 }
126 }
127 /// <summary>
128 /// 初始化一个SqlCommand对象
129 /// </summary>
130 private void CreateCommand(SqlCommand cmd,CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
131 {
132 if (IsTran)
133 {
134 cmd.Transaction = tran;
135 }
136 else
137 {
138 OpenDB();
139
140 }
141 cmd.Connection = Conn;
142 cmd.CommandType = cmdType;
143 cmd.CommandText = cmdText;
144 if (SqlParas.Length > -1)
145 {
146 foreach (SqlParameter p in SqlParas)
147 {
148 cmd.Parameters.Add(p);
149 }
150 }
151 }
152
153 /// <summary>
154 /// 执行SQL返回一个DataSet
155 /// </summary>
156 public DataSet ExecuteQuery(CommandType cmdType,string cmdText,SqlParameter[] SqlParas)
157 {
158 using (SqlCommand cmd = new SqlCommand())
159 {
160 CreateCommand(cmd, cmdType, cmdText, SqlParas);
161 using (SqlDataAdapter da = new SqlDataAdapter(cmd))
162 {
163 DataSet ds = new DataSet();
164 da.Fill(ds);
165 return ds;
166 }
167 }
168 }
169
170 /// <summary>
171 /// 执行SQL返回受影响的行数
172 /// </summary>
173 public int ExecuteNonQuery(CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
174 {
175 using (SqlCommand cmd = new SqlCommand())
176 {
177 CreateCommand(cmd, cmdType, cmdText, SqlParas);
178 return cmd.ExecuteNonQuery();
179 }
180 }
181
182 /// <summary>
183 /// 重载一:执行SQL返回第一行第一列的值
184 /// </summary>
185 public object ExecuteScalar(CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
186 {
187 using (SqlCommand cmd = new SqlCommand())
188 {
189 CreateCommand(cmd, cmdType, cmdText, SqlParas);
190 return cmd.ExecuteScalar();
191 }
192 }
193
194 /// <summary>
195 /// 重载二:执行SQL返回第一行第一列的值,可传参取代返回值为NULL的情况
196 /// </summary>
197 public string ExecuteScalar(CommandType cmdType, string cmdText, SqlParameter[] SqlParas,string WhenNull)
198 {
199 using (SqlCommand cmd = new SqlCommand())
200 {
201 CreateCommand(cmd, cmdType, cmdText, SqlParas);
202 object result = cmd.ExecuteScalar();
203 return result == null?WhenNull:result.ToString();
204 }
205 }
206
207 /// <summary>
208 /// 执行一段SQL,返回一个DataReader对象
209 /// </summary>
210 public SqlDataReader ExecuteDataReader(CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
211 {
212 using (SqlCommand cmd = new SqlCommand())
213 {
214 CreateCommand(cmd, cmdType, cmdText, SqlParas);
215 return cmd.ExecuteReader(CommandBehavior.CloseConnection);
216 }
217 }
218
219 /// <summary>
220 /// 常用分页方法
221 /// </summary>
222 /// <param name="PageSize">页面大小</param>
223 /// <param name="RecordCount">记录总量</param>
224 /// <param name="CurruntPageIndex">当前位置</param>
225 /// <param name="TableName">表名/视图名</param>
226 /// <param name="Condition">查询条件</param>
227 /// <param name="IsAsc">是否升序排序</param>
228 /// <param name="OrderBy">按哪些字段排序</param>
229 /// <returns></returns>
230 private SqlDataReader GetPageSql(string condition, Int16 pageSize, Int16 pageIndex, string tbNames, string sortNames, bool sortType)
231 {
232 System.Text.StringBuilder PageSql = new System.Text.StringBuilder();
233 string tbname, tbsortname, type;
234 type = sortType ? "ASC" : "DESC";
235 tbname = tbNames.ToUpper().IndexOf("SELECT") >= 0 ? "(" + tbNames + ")" + " as DBHelper" : tbNames + " as DBHelper";
236 tbsortname = tbNames.ToUpper().IndexOf("SELECT") >= 0 ? "(" + tbNames + ") as DBHelperID" : tbNames + " as DBHelperID";
237 if (pageIndex == 1)
238 {
239 PageSql.Append("select top " + pageSize.ToString() + " DBHelper.* from " + tbname + (!string.IsNullOrEmpty(condition) ? " where " + condition : string.Empty) + " order by " + sortNames + " " + type);
240 }
241 else
242 {
243 PageSql.AppendFormat("Select top {0} DBHelper.* from ", pageSize);
244 PageSql.AppendFormat("{0}", tbname);
245 PageSql.AppendFormat(" where DBHelper.{0} not in(select top {1} DBHelperID.{0}",
246 sortNames.Substring(sortNames.LastIndexOf(",") + 1, sortNames.Length - sortNames.LastIndexOf(",") - 1),
247 pageSize * (pageIndex - 1));
248 PageSql.AppendFormat(" from {0}", tbsortname);
249 if (!string.IsNullOrEmpty(condition))
250 {
251 PageSql.AppendFormat(" where {0} order by {1} {2}) and {0}", condition, sortNames, type);
252 }
253 else
254 {
255 PageSql.AppendFormat(" order by {0} {1})", sortNames, type);
256 }
257 PageSql.AppendFormat(" order by {0} {1}", sortNames, type);
258 }
259 return ExecuteDataReader(CommandType.Text, PageSql.ToString(), null);
260 }
261
262 /// <summary>
263 /// 手动关闭数据库连接对象
264 /// </summary>
265 public void CloseDB()
266 {
267 if (!object.Equals(Conn, null) && Conn.State != ConnectionState.Closed)
268 {
269 Conn.Close();
270 }
271 }
272 #endregion
273
274 #region 数据类型转换
275
276 public string ToStr(object obj)
277 {
278 if (object.Equals(obj, DBNull.Value) || string.IsNullOrEmpty(obj.ToString()))
279 return "";
280 else
281 return obj.ToString();
282 }
283
284 public int ToInt(object obj)
285 {
286 if (object.Equals(obj,DBNull.Value)||object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
287 return 0;
288 else
289 return Convert.ToInt32(obj);
290 }
291
292 public Int16 ToInt16(object obj)
293 {
294 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
295 return 0;
296 else
297 return Convert.ToInt16(obj);
298 }
299
300 public double ToDouble(object obj)
301 {
302 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
303 return 0;
304 else
305 return Convert.ToDouble(obj);
306 }
307
308 public Single ToSingle(object obj)
309 {
310 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
311 return 0;
312 else
313 return Convert.ToSingle(obj);
314 }
315
316 public bool ToBool(object obj)
317 {
318 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null))
319 return false;
320 else
321 return Convert.ToBoolean(obj);
322 }
323
324 public DateTime ToDateTime(object obj)
325 {
326 try
327 {
328 DateTime dt;
329 DateTime.TryParse(Convert.ToString(obj), out dt);
330 return dt;
331 }
332 catch
333 {
334 return DateTime.MinValue;
335 }
336 }
337
338 public DateTime? ToNullDate(object obj)
339 {
340 if (object.Equals(obj, DBNull.Value))
341 return null;
342 else
343 try
344 {
345 DateTime dt;
346 DateTime.TryParse(Convert.ToString(obj), out dt);
347 return dt;
348 }
349 catch
350 {
351 return null;
352 }
353 }
354
355 public int? ToNullInt(object obj)
356 {
357 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
358 return null;
359 else
360 return Convert.ToInt32(obj);
361 }
362
363 public Int16? ToNullInt16(object obj)
364 {
365 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
366 return null;
367 else
368 return Convert.ToInt16(obj);
369 }
370
371 public double? ToNulldouble(object obj)
372 {
373 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
374 return null;
375 else
376 return Convert.ToDouble(obj);
377 }
378
379 public Single? ToNullSingle(object obj)
380 {
381 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
382 return null;
383 else
384 return Convert.ToSingle(obj);
385 }
386
387 #endregion
388
389 #region 常用控件数据绑定
390 public enum SelType
391 {
392 ByValue,
393 ByText
394 }
395
396 /// <summary>
397 /// 列表型数据控件绑定
398 /// </summary>
399 public void ListBind(ListControl LstCtrl,object Lst)
400 {
401 LstCtrl.DataSource = Lst;
402 LstCtrl.DataBind();
403 }
404
405 /// <summary>
406 /// 绑定GridView
407 /// </summary>
408 public void GrdBind(GridView grdView, object Lst)
409 {
410 grdView.DataSource = Lst;
411 grdView.DataBind();
412 }
413 /// <summary>
414 /// 绑定GridView,并为指定的一列加上序号
415 /// </summary>
416 public void GrdBind(GridView grdView, object Lst, int InsertNo)
417 {
418 GrdBind(grdView, Lst);
419 for (int i = 0; i < grdView.Rows.Count; i++)
420 {
421 grdView.Rows[i].Cells[InsertNo].Text = (i + 1).ToString();
422 }
423 }
424
425 /// <summary>
426 /// 绑定DropDownList
427 /// </summary>
428 public void DdlBind(DropDownList ddlList, object Lst)
429 {
430 ddlList.DataSource = Lst;
431 ddlList.DataBind();
432 }
433 /// <summary>
434 /// 绑定DropDownList,指定文本及值的绑定项
435 /// </summary>
436 public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField)
437 {
438 ddlList.DataSource = ddlList;
439 ddlList.DataTextField = TextField;
440 ddlList.DataValueField = ValueField;
441 ddlList.DataBind();
442 }
443 /// <summary>
444 /// 绑定DropDownList,指定文本及值的绑定项,插入一个名为defaultStr的默认项
445 /// </summary>
446 public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField, string defaultStr)
447 {
448 DdlBind(ddlList, Lst, TextField, ValueField);
449 ddlList.Items.Insert(0, defaultStr);
450 }
451 /// <summary>
452 /// 绑定DropDownList,指定文本及值的绑定项,使DropDownList选择默认的值
453 /// </summary>
454 public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField,SelType FindType, string FindStr)
455 {
456 DdlBind(ddlList, Lst, TextField, ValueField);
457 int selectIndex = -1;
458 for (int i = 0; i < ddlList.Items.Count; i++)
459 {
460 switch (FindType)
461 {
462 case SelType.ByText:
463 if (ddlList.Items[i].Text == FindStr)
464 {
465 selectIndex= i;
466 }
467 break;
468 case SelType.ByValue:
469 if (ddlList.Items[i].Value == FindStr)
470 {
471 selectIndex = i;
472 }
473 break;
474 }
475 if (selectIndex > -1)
476 {
477 ddlList.SelectedIndex = selectIndex;
478 break;
479 }
480 }
481 }
482
483 #endregion
484
485 #region IDisposable 成员
486
487 public void Dispose()
488 {
489 if(Conn != null)
490 Conn.Dispose();
491 if (tran != null)
492 tran.Dispose();
493 }
494
495 #endregion
496 }
497 }
498
2 //--功能:一般ADO.NET原理,数据装箱坼箱及通用数据库控件绑定
3 //--背景:快速开发,此类供页面直接调用
4
5 using System;
6 using System.Data;
7 using System.Data.SqlClient;
8 using System.Collections.Generic;
9 using System.Text;
10 using System.Configuration;
11 using System.Web.UI.WebControls;
12
13
14 namespace R.Lee
15 {
16 /// <summary>
17 /// 数据库访问基类(for SQL)
18 /// </summary>
19 public class DBHelper:IDisposable
20 {
21 #region 成员
22 private SqlConnection Conn = null;
23 private SqlTransaction tran = null;
24 /// <summary>
25 /// 事务标识
26 /// </summary>
27 public bool IsTran { get; set; }
28 #endregion
29
30 #region 构造函数,SqlConnection对象初始化
31 public DBHelper()
32 {
33 Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
34 }
35
36 public DBHelper(string ConnectionKey)
37 {
38 Conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConnectionKey].ConnectionString);
39 }
40 #endregion
41
42 #region 数据库事务
43 /// <summary>
44 /// 事务开始
45 /// </summary>
46 public void BeginTran()
47 {
48 OpenDB();
49 tran = Conn.BeginTransaction(IsolationLevel.ReadCommitted);
50 IsTran = true;
51 }
52
53 /// <summary>
54 /// 回滚事务
55 /// </summary>
56 public void RollbackTran()
57 {
58 tran.Rollback();
59 IsTran = false;
60 }
61
62 /// <summary>
63 /// 提交事务
64 /// </summary>
65 public void CommitTran()
66 {
67 tran.Commit();
68 IsTran = false;
69 }
70 #endregion
71
72 #region SqlParameter对象创建
73
74 private SqlParameter CreateSqlParameter(string paraName,DbType paraType,int paraSize, ParameterDirection paraDirection, object paraValue)
75 {
76 SqlParameter para = new SqlParameter();
77 para.DbType = paraType;
78 para.Direction = paraDirection;
79 para.ParameterName = paraName;
80 if (paraSize > 0)
81 {
82 para.Size = paraSize;
83 }
84 para.Value = paraValue;
85 return para;
86 }
87
88 public SqlParameter CreateInSqlParameter(string paraName, DbType paraType, object paraValue)
89 {
90 return CreateSqlParameter(paraName, paraType, 0, ParameterDirection.Input, paraValue);
91 }
92
93 public SqlParameter CreateInSqlParameter(string paraName, DbType paraType,int paraSize, object paraValue)
94 {
95 return CreateSqlParameter(paraName, paraType, paraSize, ParameterDirection.Input, paraValue);
96 }
97
98 public SqlParameter CreateOutSqlParameter(string paraName, DbType paraType, object paraValue)
99 {
100 return CreateSqlParameter(paraName, paraType, 0, ParameterDirection.Output, paraValue);
101 }
102
103 public SqlParameter CreateOutSqlParameter(string paraName, DbType paraType, int paraSize, object paraValue)
104 {
105 return CreateSqlParameter(paraName, paraType, paraSize, ParameterDirection.Output, paraValue);
106 }
107 #endregion
108
109 #region 常用ADO.NET方法
110 /// <summary>
111 /// OpenDB
112 /// </summary>
113 private void OpenDB()
114 {
115 if (Conn.State != ConnectionState.Open)
116 {
117 try
118 {
119 Conn.Open();
120 }
121 catch (SqlException ex)
122 {
123 throw ex;
124 }
125 }
126 }
127 /// <summary>
128 /// 初始化一个SqlCommand对象
129 /// </summary>
130 private void CreateCommand(SqlCommand cmd,CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
131 {
132 if (IsTran)
133 {
134 cmd.Transaction = tran;
135 }
136 else
137 {
138 OpenDB();
139
140 }
141 cmd.Connection = Conn;
142 cmd.CommandType = cmdType;
143 cmd.CommandText = cmdText;
144 if (SqlParas.Length > -1)
145 {
146 foreach (SqlParameter p in SqlParas)
147 {
148 cmd.Parameters.Add(p);
149 }
150 }
151 }
152
153 /// <summary>
154 /// 执行SQL返回一个DataSet
155 /// </summary>
156 public DataSet ExecuteQuery(CommandType cmdType,string cmdText,SqlParameter[] SqlParas)
157 {
158 using (SqlCommand cmd = new SqlCommand())
159 {
160 CreateCommand(cmd, cmdType, cmdText, SqlParas);
161 using (SqlDataAdapter da = new SqlDataAdapter(cmd))
162 {
163 DataSet ds = new DataSet();
164 da.Fill(ds);
165 return ds;
166 }
167 }
168 }
169
170 /// <summary>
171 /// 执行SQL返回受影响的行数
172 /// </summary>
173 public int ExecuteNonQuery(CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
174 {
175 using (SqlCommand cmd = new SqlCommand())
176 {
177 CreateCommand(cmd, cmdType, cmdText, SqlParas);
178 return cmd.ExecuteNonQuery();
179 }
180 }
181
182 /// <summary>
183 /// 重载一:执行SQL返回第一行第一列的值
184 /// </summary>
185 public object ExecuteScalar(CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
186 {
187 using (SqlCommand cmd = new SqlCommand())
188 {
189 CreateCommand(cmd, cmdType, cmdText, SqlParas);
190 return cmd.ExecuteScalar();
191 }
192 }
193
194 /// <summary>
195 /// 重载二:执行SQL返回第一行第一列的值,可传参取代返回值为NULL的情况
196 /// </summary>
197 public string ExecuteScalar(CommandType cmdType, string cmdText, SqlParameter[] SqlParas,string WhenNull)
198 {
199 using (SqlCommand cmd = new SqlCommand())
200 {
201 CreateCommand(cmd, cmdType, cmdText, SqlParas);
202 object result = cmd.ExecuteScalar();
203 return result == null?WhenNull:result.ToString();
204 }
205 }
206
207 /// <summary>
208 /// 执行一段SQL,返回一个DataReader对象
209 /// </summary>
210 public SqlDataReader ExecuteDataReader(CommandType cmdType, string cmdText, SqlParameter[] SqlParas)
211 {
212 using (SqlCommand cmd = new SqlCommand())
213 {
214 CreateCommand(cmd, cmdType, cmdText, SqlParas);
215 return cmd.ExecuteReader(CommandBehavior.CloseConnection);
216 }
217 }
218
219 /// <summary>
220 /// 常用分页方法
221 /// </summary>
222 /// <param name="PageSize">页面大小</param>
223 /// <param name="RecordCount">记录总量</param>
224 /// <param name="CurruntPageIndex">当前位置</param>
225 /// <param name="TableName">表名/视图名</param>
226 /// <param name="Condition">查询条件</param>
227 /// <param name="IsAsc">是否升序排序</param>
228 /// <param name="OrderBy">按哪些字段排序</param>
229 /// <returns></returns>
230 private SqlDataReader GetPageSql(string condition, Int16 pageSize, Int16 pageIndex, string tbNames, string sortNames, bool sortType)
231 {
232 System.Text.StringBuilder PageSql = new System.Text.StringBuilder();
233 string tbname, tbsortname, type;
234 type = sortType ? "ASC" : "DESC";
235 tbname = tbNames.ToUpper().IndexOf("SELECT") >= 0 ? "(" + tbNames + ")" + " as DBHelper" : tbNames + " as DBHelper";
236 tbsortname = tbNames.ToUpper().IndexOf("SELECT") >= 0 ? "(" + tbNames + ") as DBHelperID" : tbNames + " as DBHelperID";
237 if (pageIndex == 1)
238 {
239 PageSql.Append("select top " + pageSize.ToString() + " DBHelper.* from " + tbname + (!string.IsNullOrEmpty(condition) ? " where " + condition : string.Empty) + " order by " + sortNames + " " + type);
240 }
241 else
242 {
243 PageSql.AppendFormat("Select top {0} DBHelper.* from ", pageSize);
244 PageSql.AppendFormat("{0}", tbname);
245 PageSql.AppendFormat(" where DBHelper.{0} not in(select top {1} DBHelperID.{0}",
246 sortNames.Substring(sortNames.LastIndexOf(",") + 1, sortNames.Length - sortNames.LastIndexOf(",") - 1),
247 pageSize * (pageIndex - 1));
248 PageSql.AppendFormat(" from {0}", tbsortname);
249 if (!string.IsNullOrEmpty(condition))
250 {
251 PageSql.AppendFormat(" where {0} order by {1} {2}) and {0}", condition, sortNames, type);
252 }
253 else
254 {
255 PageSql.AppendFormat(" order by {0} {1})", sortNames, type);
256 }
257 PageSql.AppendFormat(" order by {0} {1}", sortNames, type);
258 }
259 return ExecuteDataReader(CommandType.Text, PageSql.ToString(), null);
260 }
261
262 /// <summary>
263 /// 手动关闭数据库连接对象
264 /// </summary>
265 public void CloseDB()
266 {
267 if (!object.Equals(Conn, null) && Conn.State != ConnectionState.Closed)
268 {
269 Conn.Close();
270 }
271 }
272 #endregion
273
274 #region 数据类型转换
275
276 public string ToStr(object obj)
277 {
278 if (object.Equals(obj, DBNull.Value) || string.IsNullOrEmpty(obj.ToString()))
279 return "";
280 else
281 return obj.ToString();
282 }
283
284 public int ToInt(object obj)
285 {
286 if (object.Equals(obj,DBNull.Value)||object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
287 return 0;
288 else
289 return Convert.ToInt32(obj);
290 }
291
292 public Int16 ToInt16(object obj)
293 {
294 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
295 return 0;
296 else
297 return Convert.ToInt16(obj);
298 }
299
300 public double ToDouble(object obj)
301 {
302 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
303 return 0;
304 else
305 return Convert.ToDouble(obj);
306 }
307
308 public Single ToSingle(object obj)
309 {
310 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
311 return 0;
312 else
313 return Convert.ToSingle(obj);
314 }
315
316 public bool ToBool(object obj)
317 {
318 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null))
319 return false;
320 else
321 return Convert.ToBoolean(obj);
322 }
323
324 public DateTime ToDateTime(object obj)
325 {
326 try
327 {
328 DateTime dt;
329 DateTime.TryParse(Convert.ToString(obj), out dt);
330 return dt;
331 }
332 catch
333 {
334 return DateTime.MinValue;
335 }
336 }
337
338 public DateTime? ToNullDate(object obj)
339 {
340 if (object.Equals(obj, DBNull.Value))
341 return null;
342 else
343 try
344 {
345 DateTime dt;
346 DateTime.TryParse(Convert.ToString(obj), out dt);
347 return dt;
348 }
349 catch
350 {
351 return null;
352 }
353 }
354
355 public int? ToNullInt(object obj)
356 {
357 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
358 return null;
359 else
360 return Convert.ToInt32(obj);
361 }
362
363 public Int16? ToNullInt16(object obj)
364 {
365 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
366 return null;
367 else
368 return Convert.ToInt16(obj);
369 }
370
371 public double? ToNulldouble(object obj)
372 {
373 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
374 return null;
375 else
376 return Convert.ToDouble(obj);
377 }
378
379 public Single? ToNullSingle(object obj)
380 {
381 if (object.Equals(obj, DBNull.Value) || object.Equals(obj, null) || string.IsNullOrEmpty(obj.ToString()))
382 return null;
383 else
384 return Convert.ToSingle(obj);
385 }
386
387 #endregion
388
389 #region 常用控件数据绑定
390 public enum SelType
391 {
392 ByValue,
393 ByText
394 }
395
396 /// <summary>
397 /// 列表型数据控件绑定
398 /// </summary>
399 public void ListBind(ListControl LstCtrl,object Lst)
400 {
401 LstCtrl.DataSource = Lst;
402 LstCtrl.DataBind();
403 }
404
405 /// <summary>
406 /// 绑定GridView
407 /// </summary>
408 public void GrdBind(GridView grdView, object Lst)
409 {
410 grdView.DataSource = Lst;
411 grdView.DataBind();
412 }
413 /// <summary>
414 /// 绑定GridView,并为指定的一列加上序号
415 /// </summary>
416 public void GrdBind(GridView grdView, object Lst, int InsertNo)
417 {
418 GrdBind(grdView, Lst);
419 for (int i = 0; i < grdView.Rows.Count; i++)
420 {
421 grdView.Rows[i].Cells[InsertNo].Text = (i + 1).ToString();
422 }
423 }
424
425 /// <summary>
426 /// 绑定DropDownList
427 /// </summary>
428 public void DdlBind(DropDownList ddlList, object Lst)
429 {
430 ddlList.DataSource = Lst;
431 ddlList.DataBind();
432 }
433 /// <summary>
434 /// 绑定DropDownList,指定文本及值的绑定项
435 /// </summary>
436 public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField)
437 {
438 ddlList.DataSource = ddlList;
439 ddlList.DataTextField = TextField;
440 ddlList.DataValueField = ValueField;
441 ddlList.DataBind();
442 }
443 /// <summary>
444 /// 绑定DropDownList,指定文本及值的绑定项,插入一个名为defaultStr的默认项
445 /// </summary>
446 public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField, string defaultStr)
447 {
448 DdlBind(ddlList, Lst, TextField, ValueField);
449 ddlList.Items.Insert(0, defaultStr);
450 }
451 /// <summary>
452 /// 绑定DropDownList,指定文本及值的绑定项,使DropDownList选择默认的值
453 /// </summary>
454 public void DdlBind(DropDownList ddlList, Object Lst, string TextField, string ValueField,SelType FindType, string FindStr)
455 {
456 DdlBind(ddlList, Lst, TextField, ValueField);
457 int selectIndex = -1;
458 for (int i = 0; i < ddlList.Items.Count; i++)
459 {
460 switch (FindType)
461 {
462 case SelType.ByText:
463 if (ddlList.Items[i].Text == FindStr)
464 {
465 selectIndex= i;
466 }
467 break;
468 case SelType.ByValue:
469 if (ddlList.Items[i].Value == FindStr)
470 {
471 selectIndex = i;
472 }
473 break;
474 }
475 if (selectIndex > -1)
476 {
477 ddlList.SelectedIndex = selectIndex;
478 break;
479 }
480 }
481 }
482
483 #endregion
484
485 #region IDisposable 成员
486
487 public void Dispose()
488 {
489 if(Conn != null)
490 Conn.Dispose();
491 if (tran != null)
492 tran.Dispose();
493 }
494
495 #endregion
496 }
497 }
498

浙公网安备 33010602011771号