市长热线演示版

DbHelperSQL.cs 51KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Specialized;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Configuration;
  7. using System.Data.Common;
  8. using System.Collections.Generic;
  9. namespace HySoft.DBUtility
  10. {
  11. public abstract class DbHelperSQL
  12. {
  13. //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
  14. public static string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
  15. public DbHelperSQL(){ }
  16. #region 公用方法
  17. /// <summary>
  18. /// 判断是否存在某表的某个字段
  19. /// </summary>
  20. /// <param name="tableName">表名称</param>
  21. /// <param name="columnName">列名称</param>
  22. /// <returns>是否存在</returns>
  23. public static bool ColumnExists(string tableName, string columnName)
  24. {
  25. string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
  26. object res = GetSingle(sql);
  27. if (res == null)
  28. {
  29. return false;
  30. }
  31. return Convert.ToInt32(res) > 0;
  32. }
  33. public static int GetMinID(string FieldName, string TableName)
  34. {
  35. string strsql = "select min(" + FieldName + ") from " + TableName;
  36. object obj = DbHelperSQL.GetSingle(strsql);
  37. if (obj == null)
  38. {
  39. return 0;
  40. }
  41. else
  42. {
  43. return int.Parse(obj.ToString());
  44. }
  45. }
  46. public static int GetMaxID(string FieldName, string TableName)
  47. {
  48. string strsql = "select max(" + FieldName + ")+1 from " + TableName;
  49. object obj = DbHelperSQL.GetSingle(strsql);
  50. if (obj == null)
  51. {
  52. return 1;
  53. }
  54. else
  55. {
  56. return int.Parse(obj.ToString());
  57. }
  58. }
  59. public static int MaxID(string FieldName, string TableName)
  60. {
  61. string strsql = "select max(" + FieldName + ") from " + TableName;
  62. object obj = DbHelperSQL.GetSingle(strsql);
  63. if (obj == null)
  64. {
  65. return 1;
  66. }
  67. else
  68. {
  69. return int.Parse(obj.ToString());
  70. }
  71. }
  72. public static bool Exists(string strSql)
  73. {
  74. object obj = DbHelperSQL.GetSingle(strSql);
  75. int cmdresult;
  76. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  77. {
  78. cmdresult = 0;
  79. }
  80. else
  81. {
  82. cmdresult = int.Parse(obj.ToString());
  83. }
  84. if (cmdresult == 0)
  85. {
  86. return false;
  87. }
  88. else
  89. {
  90. return true;
  91. }
  92. }
  93. /// <summary>
  94. /// 表是否存在
  95. /// </summary>
  96. /// <param name="TableName"></param>
  97. /// <returns></returns>
  98. public static bool TabExists(string TableName)
  99. {
  100. string strsql = "select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";
  101. //string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[" + TableName + "]') AND type in (N'U')";
  102. object obj = DbHelperSQL.GetSingle(strsql);
  103. int cmdresult;
  104. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  105. {
  106. cmdresult = 0;
  107. }
  108. else
  109. {
  110. cmdresult = int.Parse(obj.ToString());
  111. }
  112. if (cmdresult == 0)
  113. {
  114. return false;
  115. }
  116. else
  117. {
  118. return true;
  119. }
  120. }
  121. /// <summary>
  122. /// 存在返回true,不存在返回false
  123. /// </summary>
  124. /// <param name="strSql"></param>
  125. /// <param name="cmdParms"></param>
  126. /// <returns></returns>
  127. public static bool Exists(string strSql, params SqlParameter[] cmdParms)
  128. {
  129. object obj = DbHelperSQL.GetSingle(strSql, cmdParms);
  130. int cmdresult;
  131. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  132. {
  133. cmdresult = 0;
  134. }
  135. else
  136. {
  137. cmdresult = int.Parse(obj.ToString());
  138. }
  139. if (cmdresult == 0)
  140. {
  141. return false;
  142. }
  143. else
  144. {
  145. return true;
  146. }
  147. }
  148. #endregion
  149. #region 执行简单SQL语句
  150. /// <summary>
  151. /// 执行SQL语句,返回影响的记录数
  152. /// </summary>
  153. /// <param name="SQLString">SQL语句</param>
  154. /// <returns>影响的记录数</returns>
  155. public static int ExecuteSql(string SQLString)
  156. {
  157. using (SqlConnection connection = new SqlConnection(connectionString))
  158. {
  159. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  160. {
  161. try
  162. {
  163. connection.Open();
  164. int rows = cmd.ExecuteNonQuery();
  165. return rows;
  166. }
  167. catch (System.Data.SqlClient.SqlException e)
  168. {
  169. connection.Close();
  170. throw e;
  171. }
  172. }
  173. }
  174. }
  175. /// <summary>
  176. /// 2012-2-21新增重载,执行SQL语句,返回影响的记录数
  177. /// </summary>
  178. /// <param name="connection">SqlConnection对象</param>
  179. /// <param name="trans">SqlTransaction事件</param>
  180. /// <param name="SQLString">SQL语句</param>
  181. /// <returns>影响的记录数</returns>
  182. public static int ExecuteSql(SqlConnection connection, SqlTransaction trans, string SQLString)
  183. {
  184. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  185. {
  186. try
  187. {
  188. cmd.Connection = connection;
  189. cmd.Transaction = trans;
  190. int rows = cmd.ExecuteNonQuery();
  191. return rows;
  192. }
  193. catch (System.Data.SqlClient.SqlException e)
  194. {
  195. trans.Rollback();
  196. throw e;
  197. }
  198. }
  199. }
  200. public static int ExecuteSqlByTime(string SQLString, int Times)
  201. {
  202. using (SqlConnection connection = new SqlConnection(connectionString))
  203. {
  204. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  205. {
  206. try
  207. {
  208. connection.Open();
  209. cmd.CommandTimeout = Times;
  210. int rows = cmd.ExecuteNonQuery();
  211. return rows;
  212. }
  213. catch (System.Data.SqlClient.SqlException e)
  214. {
  215. connection.Close();
  216. throw e;
  217. }
  218. }
  219. }
  220. }
  221. /// <summary>
  222. /// 执行Sql和Oracle滴混合事务
  223. /// </summary>
  224. /// <param name="list">SQL命令行列表</param>
  225. /// <param name="oracleCmdSqlList">Oracle命令行列表</param>
  226. /// <returns>执行结果 0-由于SQL造成事务失败 -1 由于Oracle造成事务失败 1-整体事务执行成功</returns>
  227. public static int ExecuteSqlTran(List<CommandInfo> list, List<CommandInfo> oracleCmdSqlList)
  228. {
  229. using (SqlConnection conn = new SqlConnection(connectionString))
  230. {
  231. conn.Open();
  232. SqlCommand cmd = new SqlCommand();
  233. cmd.Connection = conn;
  234. SqlTransaction tx = conn.BeginTransaction();
  235. cmd.Transaction = tx;
  236. try
  237. {
  238. foreach (CommandInfo myDE in list)
  239. {
  240. string cmdText = myDE.CommandText;
  241. SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;
  242. PrepareCommand(cmd, conn, tx, cmdText, cmdParms);
  243. if (myDE.EffentNextType == EffentNextType.SolicitationEvent)
  244. {
  245. if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
  246. {
  247. tx.Rollback();
  248. throw new Exception("违背要求" + myDE.CommandText + "必须符合select count(..的格式");
  249. //return 0;
  250. }
  251. object obj = cmd.ExecuteScalar();
  252. bool isHave = false;
  253. if (obj == null && obj == DBNull.Value)
  254. {
  255. isHave = false;
  256. }
  257. isHave = Convert.ToInt32(obj) > 0;
  258. if (isHave)
  259. {
  260. //引发事件
  261. myDE.OnSolicitationEvent();
  262. }
  263. }
  264. if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
  265. {
  266. if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
  267. {
  268. tx.Rollback();
  269. throw new Exception("SQL:违背要求" + myDE.CommandText + "必须符合select count(..的格式");
  270. //return 0;
  271. }
  272. object obj = cmd.ExecuteScalar();
  273. bool isHave = false;
  274. if (obj == null && obj == DBNull.Value)
  275. {
  276. isHave = false;
  277. }
  278. isHave = Convert.ToInt32(obj) > 0;
  279. if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
  280. {
  281. tx.Rollback();
  282. throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须大于0");
  283. //return 0;
  284. }
  285. if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
  286. {
  287. tx.Rollback();
  288. throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须等于0");
  289. //return 0;
  290. }
  291. continue;
  292. }
  293. int val = cmd.ExecuteNonQuery();
  294. if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
  295. {
  296. tx.Rollback();
  297. throw new Exception("SQL:违背要求" + myDE.CommandText + "必须有影响行");
  298. //return 0;
  299. }
  300. cmd.Parameters.Clear();
  301. }
  302. //string oraConnectionString = PubConstant.GetConnectionString("ConnectionStringPPC");
  303. //bool res = OracleHelper.ExecuteSqlTran(oraConnectionString, oracleCmdSqlList);
  304. //if (!res)
  305. //{
  306. // tx.Rollback();
  307. // throw new Exception("Oracle执行失败");
  308. // return -1;
  309. //}
  310. tx.Commit();
  311. return 1;
  312. }
  313. catch (System.Data.SqlClient.SqlException e)
  314. {
  315. tx.Rollback();
  316. throw e;
  317. }
  318. catch (Exception e)
  319. {
  320. tx.Rollback();
  321. throw e;
  322. }
  323. }
  324. }
  325. /// <summary>
  326. /// 执行多条SQL语句,实现数据库事务。
  327. /// </summary>
  328. /// <param name="SQLStringList">多条SQL语句</param>
  329. public static int ExecuteSqlTran(List<String> SQLStringList)
  330. {
  331. using (SqlConnection conn = new SqlConnection(connectionString))
  332. {
  333. conn.Open();
  334. SqlCommand cmd = new SqlCommand();
  335. cmd.Connection = conn;
  336. SqlTransaction tx = conn.BeginTransaction();
  337. cmd.Transaction = tx;
  338. try
  339. {
  340. int count = 0;
  341. for (int n = 0; n < SQLStringList.Count; n++)
  342. {
  343. string strsql = SQLStringList[n];
  344. if (strsql.Trim().Length > 1)
  345. {
  346. cmd.CommandText = strsql;
  347. count += cmd.ExecuteNonQuery();
  348. }
  349. }
  350. tx.Commit();
  351. return count;
  352. }
  353. catch
  354. {
  355. tx.Rollback();
  356. return 0;
  357. }
  358. }
  359. }
  360. /// <summary>
  361. /// 执行带一个存储过程参数的的SQL语句。
  362. /// </summary>
  363. /// <param name="SQLString">SQL语句</param>
  364. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  365. /// <returns>影响的记录数</returns>
  366. public static int ExecuteSql(string SQLString, string content)
  367. {
  368. using (SqlConnection connection = new SqlConnection(connectionString))
  369. {
  370. SqlCommand cmd = new SqlCommand(SQLString, connection);
  371. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
  372. myParameter.Value = content;
  373. cmd.Parameters.Add(myParameter);
  374. try
  375. {
  376. connection.Open();
  377. int rows = cmd.ExecuteNonQuery();
  378. return rows;
  379. }
  380. catch (System.Data.SqlClient.SqlException e)
  381. {
  382. throw e;
  383. }
  384. finally
  385. {
  386. cmd.Dispose();
  387. connection.Close();
  388. }
  389. }
  390. }
  391. /// <summary>
  392. /// 执行带一个存储过程参数的的SQL语句。
  393. /// </summary>
  394. /// <param name="SQLString">SQL语句</param>
  395. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  396. /// <returns>影响的记录数</returns>
  397. public static object ExecuteSqlGet(string SQLString, string content)
  398. {
  399. using (SqlConnection connection = new SqlConnection(connectionString))
  400. {
  401. SqlCommand cmd = new SqlCommand(SQLString, connection);
  402. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
  403. myParameter.Value = content;
  404. cmd.Parameters.Add(myParameter);
  405. try
  406. {
  407. connection.Open();
  408. object obj = cmd.ExecuteScalar();
  409. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  410. {
  411. return null;
  412. }
  413. else
  414. {
  415. return obj;
  416. }
  417. }
  418. catch (System.Data.SqlClient.SqlException e)
  419. {
  420. throw e;
  421. }
  422. finally
  423. {
  424. cmd.Dispose();
  425. connection.Close();
  426. }
  427. }
  428. }
  429. /// <summary>
  430. /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
  431. /// </summary>
  432. /// <param name="strSQL">SQL语句</param>
  433. /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
  434. /// <returns>影响的记录数</returns>
  435. public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
  436. {
  437. using (SqlConnection connection = new SqlConnection(connectionString))
  438. {
  439. SqlCommand cmd = new SqlCommand(strSQL, connection);
  440. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
  441. myParameter.Value = fs;
  442. cmd.Parameters.Add(myParameter);
  443. try
  444. {
  445. connection.Open();
  446. int rows = cmd.ExecuteNonQuery();
  447. return rows;
  448. }
  449. catch (System.Data.SqlClient.SqlException e)
  450. {
  451. throw e;
  452. }
  453. finally
  454. {
  455. cmd.Dispose();
  456. connection.Close();
  457. }
  458. }
  459. }
  460. /// <summary>
  461. /// 执行一条计算查询结果语句,返回查询结果(object)。
  462. /// </summary>
  463. /// <param name="SQLString">计算查询结果语句</param>
  464. /// <returns>查询结果(object)</returns>
  465. public static object GetSingle(string SQLString)
  466. {
  467. using (SqlConnection connection = new SqlConnection(connectionString))
  468. {
  469. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  470. {
  471. try
  472. {
  473. connection.Open();
  474. object obj = cmd.ExecuteScalar();
  475. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  476. {
  477. return null;
  478. }
  479. else
  480. {
  481. return obj;
  482. }
  483. }
  484. catch (System.Data.SqlClient.SqlException e)
  485. {
  486. connection.Close();
  487. throw e;
  488. }
  489. }
  490. }
  491. }
  492. public static object GetSingle(string SQLString, int Times)
  493. {
  494. using (SqlConnection connection = new SqlConnection(connectionString))
  495. {
  496. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  497. {
  498. try
  499. {
  500. connection.Open();
  501. cmd.CommandTimeout = Times;
  502. object obj = cmd.ExecuteScalar();
  503. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  504. {
  505. return null;
  506. }
  507. else
  508. {
  509. return obj;
  510. }
  511. }
  512. catch (System.Data.SqlClient.SqlException e)
  513. {
  514. connection.Close();
  515. throw e;
  516. }
  517. }
  518. }
  519. }
  520. /// <summary>
  521. /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  522. /// </summary>
  523. /// <param name="strSQL">查询语句</param>
  524. /// <returns>SqlDataReader</returns>
  525. public static SqlDataReader ExecuteReader(string strSQL)
  526. {
  527. SqlConnection connection = new SqlConnection(connectionString);
  528. SqlCommand cmd = new SqlCommand(strSQL, connection);
  529. try
  530. {
  531. connection.Open();
  532. SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  533. return myReader;
  534. }
  535. catch (System.Data.SqlClient.SqlException e)
  536. {
  537. throw e;
  538. }
  539. }
  540. /// <summary>
  541. /// 执行查询语句,返回DataSet
  542. /// </summary>
  543. /// <param name="SQLString">查询语句</param>
  544. /// <returns>DataSet</returns>
  545. public static DataSet Query(string SQLString)
  546. {
  547. using (SqlConnection connection = new SqlConnection(connectionString))
  548. {
  549. DataSet ds = new DataSet();
  550. try
  551. {
  552. connection.Open();
  553. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  554. command.Fill(ds, "ds");
  555. }
  556. catch (System.Data.SqlClient.SqlException ex)
  557. {
  558. throw new Exception(ex.Message);
  559. }
  560. return ds;
  561. }
  562. }
  563. public static DataSet Query(string SQLString, int Times)
  564. {
  565. using (SqlConnection connection = new SqlConnection(connectionString))
  566. {
  567. DataSet ds = new DataSet();
  568. try
  569. {
  570. connection.Open();
  571. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  572. command.SelectCommand.CommandTimeout = Times;
  573. command.Fill(ds, "ds");
  574. }
  575. catch (System.Data.SqlClient.SqlException ex)
  576. {
  577. throw new Exception(ex.Message);
  578. }
  579. return ds;
  580. }
  581. }
  582. /// <summary>
  583. /// 2012-2-21新增重载,执行查询语句,返回DataSet
  584. /// </summary>
  585. /// <param name="connection">SqlConnection对象</param>
  586. /// <param name="trans">SqlTransaction事务</param>
  587. /// <param name="SQLString">SQL语句</param>
  588. /// <returns>DataSet</returns>
  589. public static DataSet Query(SqlConnection connection, SqlTransaction trans, string SQLString)
  590. {
  591. DataSet ds = new DataSet();
  592. try
  593. {
  594. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  595. command.SelectCommand.Transaction = trans;
  596. command.Fill(ds, "ds");
  597. }
  598. catch (System.Data.SqlClient.SqlException ex)
  599. {
  600. throw new Exception(ex.Message);
  601. }
  602. return ds;
  603. }
  604. #endregion
  605. #region 执行带参数的SQL语句
  606. /// <summary>
  607. /// 执行SQL语句,返回影响的记录数
  608. /// </summary>
  609. /// <param name="SQLString">SQL语句</param>
  610. /// <returns>影响的记录数</returns>
  611. public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
  612. {
  613. using (SqlConnection connection = new SqlConnection(connectionString))
  614. {
  615. using (SqlCommand cmd = new SqlCommand())
  616. {
  617. try
  618. {
  619. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  620. int rows = cmd.ExecuteNonQuery();
  621. cmd.Parameters.Clear();
  622. return rows;
  623. }
  624. catch (System.Data.SqlClient.SqlException e)
  625. {
  626. throw e;
  627. }
  628. }
  629. }
  630. }
  631. /// <summary>
  632. /// 2012-2-29新增重载,执行SQL语句,返回影响的记录数
  633. /// </summary>
  634. /// <param name="connection">SqlConnection对象</param>
  635. /// <param name="trans">SqlTransaction对象</param>
  636. /// <param name="SQLString">SQL语句</param>
  637. /// <returns>影响的记录数</returns>
  638. public static int ExecuteSql(SqlConnection connection, SqlTransaction trans, string SQLString, params SqlParameter[] cmdParms)
  639. {
  640. using (SqlCommand cmd = new SqlCommand())
  641. {
  642. try
  643. {
  644. PrepareCommand(cmd, connection, trans, SQLString, cmdParms);
  645. int rows = cmd.ExecuteNonQuery();
  646. cmd.Parameters.Clear();
  647. return rows;
  648. }
  649. catch (System.Data.SqlClient.SqlException e)
  650. {
  651. trans.Rollback();
  652. throw e;
  653. }
  654. }
  655. }
  656. /// <summary>
  657. /// 执行多条SQL语句,实现数据库事务。
  658. /// </summary>
  659. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  660. public static int ExecuteSqlTran(Hashtable SQLStringList)
  661. {
  662. using (SqlConnection conn = new SqlConnection(connectionString))
  663. {
  664. conn.Open();
  665. using (SqlTransaction trans = conn.BeginTransaction())
  666. {
  667. SqlCommand cmd = new SqlCommand();
  668. try
  669. {
  670. //循环
  671. int count = 0;
  672. foreach (DictionaryEntry myDE in SQLStringList)
  673. {
  674. string cmdText = myDE.Key.ToString();
  675. SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
  676. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  677. int val = cmd.ExecuteNonQuery();
  678. cmd.Parameters.Clear();
  679. count += val;
  680. }
  681. trans.Commit();
  682. return count;
  683. }
  684. catch
  685. {
  686. trans.Rollback();
  687. return 0;
  688. }
  689. }
  690. }
  691. }
  692. /// <summary>
  693. /// 执行多条SQL语句,实现数据库事务。
  694. /// </summary>
  695. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  696. public static int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)
  697. {
  698. using (SqlConnection conn = new SqlConnection(connectionString))
  699. {
  700. conn.Open();
  701. using (SqlTransaction trans = conn.BeginTransaction())
  702. {
  703. SqlCommand cmd = new SqlCommand();
  704. try
  705. {
  706. int count = 0;
  707. //循环
  708. foreach (CommandInfo myDE in cmdList)
  709. {
  710. string cmdText = myDE.CommandText;
  711. SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;
  712. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  713. if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)
  714. {
  715. if (myDE.CommandText.ToLower().IndexOf("count(") == -1)
  716. {
  717. trans.Rollback();
  718. return 0;
  719. }
  720. object obj = cmd.ExecuteScalar();
  721. bool isHave = false;
  722. if (obj == null && obj == DBNull.Value)
  723. {
  724. isHave = false;
  725. }
  726. isHave = Convert.ToInt32(obj) > 0;
  727. if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)
  728. {
  729. trans.Rollback();
  730. return 0;
  731. }
  732. if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)
  733. {
  734. trans.Rollback();
  735. return 0;
  736. }
  737. continue;
  738. }
  739. int val = cmd.ExecuteNonQuery();
  740. count += val;
  741. if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)
  742. {
  743. trans.Rollback();
  744. return 0;
  745. }
  746. cmd.Parameters.Clear();
  747. }
  748. trans.Commit();
  749. return count;
  750. }
  751. catch
  752. {
  753. trans.Rollback();
  754. throw;
  755. }
  756. }
  757. }
  758. }
  759. /// <summary>
  760. /// 执行多条SQL语句,实现数据库事务。
  761. /// </summary>
  762. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  763. public static int ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> SQLStringList)
  764. {
  765. using (SqlConnection conn = new SqlConnection(connectionString))
  766. {
  767. conn.Open();
  768. using (SqlTransaction trans = conn.BeginTransaction())
  769. {
  770. SqlCommand cmd = new SqlCommand();
  771. try
  772. {
  773. int indentity = 0;
  774. int count = 0;
  775. //循环
  776. foreach (CommandInfo myDE in SQLStringList)
  777. {
  778. string cmdText = myDE.CommandText;
  779. SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;
  780. foreach (SqlParameter q in cmdParms)
  781. {
  782. if (q.Direction == ParameterDirection.InputOutput)
  783. {
  784. q.Value = indentity;
  785. }
  786. }
  787. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  788. int val = cmd.ExecuteNonQuery();
  789. foreach (SqlParameter q in cmdParms)
  790. {
  791. if (q.Direction == ParameterDirection.Output)
  792. {
  793. indentity = Convert.ToInt32(q.Value);
  794. }
  795. }
  796. count += val;
  797. cmd.Parameters.Clear();
  798. }
  799. trans.Commit();
  800. return count;
  801. }
  802. catch
  803. {
  804. trans.Rollback();
  805. return 0;
  806. }
  807. }
  808. }
  809. }
  810. /// <summary>
  811. /// 执行多条SQL语句,实现数据库事务。
  812. /// </summary>
  813. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  814. public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)
  815. {
  816. using (SqlConnection conn = new SqlConnection(connectionString))
  817. {
  818. conn.Open();
  819. using (SqlTransaction trans = conn.BeginTransaction())
  820. {
  821. SqlCommand cmd = new SqlCommand();
  822. try
  823. {
  824. int indentity = 0;
  825. //循环
  826. foreach (DictionaryEntry myDE in SQLStringList)
  827. {
  828. string cmdText = myDE.Key.ToString();
  829. SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
  830. foreach (SqlParameter q in cmdParms)
  831. {
  832. if (q.Direction == ParameterDirection.InputOutput)
  833. {
  834. q.Value = indentity;
  835. }
  836. }
  837. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  838. int val = cmd.ExecuteNonQuery();
  839. foreach (SqlParameter q in cmdParms)
  840. {
  841. if (q.Direction == ParameterDirection.Output)
  842. {
  843. indentity = Convert.ToInt32(q.Value);
  844. }
  845. }
  846. cmd.Parameters.Clear();
  847. }
  848. trans.Commit();
  849. }
  850. catch
  851. {
  852. trans.Rollback();
  853. throw;
  854. }
  855. }
  856. }
  857. }
  858. /// <summary>
  859. /// 执行一条计算查询结果语句,返回查询结果(object)。
  860. /// </summary>
  861. /// <param name="SQLString">计算查询结果语句</param>
  862. /// <returns>查询结果(object)</returns>
  863. public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
  864. {
  865. using (SqlConnection connection = new SqlConnection(connectionString))
  866. {
  867. using (SqlCommand cmd = new SqlCommand())
  868. {
  869. try
  870. {
  871. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  872. object obj = cmd.ExecuteScalar();
  873. cmd.Parameters.Clear();
  874. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  875. {
  876. return null;
  877. }
  878. else
  879. {
  880. return obj;
  881. }
  882. }
  883. catch (System.Data.SqlClient.SqlException e)
  884. {
  885. throw e;
  886. }
  887. }
  888. }
  889. }
  890. /// <summary>
  891. /// 2012-2-21新增重载,执行一条计算查询结果语句,返回查询结果(object)。
  892. /// </summary>
  893. /// <param name="connection">SqlConnection对象</param>
  894. /// <param name="trans">SqlTransaction事务</param>
  895. /// <param name="SQLString">计算查询结果语句</param>
  896. /// <returns>查询结果(object)</returns>
  897. public static object GetSingle(SqlConnection connection, SqlTransaction trans, string SQLString, params SqlParameter[] cmdParms)
  898. {
  899. using (SqlCommand cmd = new SqlCommand())
  900. {
  901. try
  902. {
  903. PrepareCommand(cmd, connection, trans, SQLString, cmdParms);
  904. object obj = cmd.ExecuteScalar();
  905. cmd.Parameters.Clear();
  906. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  907. {
  908. return null;
  909. }
  910. else
  911. {
  912. return obj;
  913. }
  914. }
  915. catch (System.Data.SqlClient.SqlException e)
  916. {
  917. trans.Rollback();
  918. throw e;
  919. }
  920. }
  921. }
  922. /// <summary>
  923. /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  924. /// </summary>
  925. /// <param name="strSQL">查询语句</param>
  926. /// <returns>SqlDataReader</returns>
  927. public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
  928. {
  929. SqlConnection connection = new SqlConnection(connectionString);
  930. SqlCommand cmd = new SqlCommand();
  931. try
  932. {
  933. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  934. SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  935. cmd.Parameters.Clear();
  936. return myReader;
  937. }
  938. catch (System.Data.SqlClient.SqlException e)
  939. {
  940. throw e;
  941. }
  942. // finally
  943. // {
  944. // cmd.Dispose();
  945. // connection.Close();
  946. // }
  947. }
  948. /// <summary>
  949. /// 执行查询语句,返回DataSet
  950. /// </summary>
  951. /// <param name="SQLString">查询语句</param>
  952. /// <returns>DataSet</returns>
  953. public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)
  954. {
  955. using (SqlConnection connection = new SqlConnection(connectionString))
  956. {
  957. SqlCommand cmd = new SqlCommand();
  958. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  959. using (SqlDataAdapter da = new SqlDataAdapter(cmd))
  960. {
  961. DataSet ds = new DataSet();
  962. try
  963. {
  964. da.Fill(ds, "ds");
  965. cmd.Parameters.Clear();
  966. }
  967. catch (System.Data.SqlClient.SqlException ex)
  968. {
  969. throw new Exception(ex.Message);
  970. }
  971. return ds;
  972. }
  973. }
  974. }
  975. /// <summary>
  976. /// 2012-2-21新增重载,执行查询语句,返回DataSet
  977. /// </summary>
  978. /// <param name="connection">SqlConnection对象</param>
  979. /// <param name="trans">SqlTransaction事务</param>
  980. /// <param name="SQLString">查询语句</param>
  981. /// <returns>DataSet</returns>
  982. public static DataSet Query(SqlConnection connection, SqlTransaction trans, string SQLString, params SqlParameter[] cmdParms)
  983. {
  984. SqlCommand cmd = new SqlCommand();
  985. PrepareCommand(cmd, connection, trans, SQLString, cmdParms);
  986. using (SqlDataAdapter da = new SqlDataAdapter(cmd))
  987. {
  988. DataSet ds = new DataSet();
  989. try
  990. {
  991. da.Fill(ds, "ds");
  992. cmd.Parameters.Clear();
  993. }
  994. catch (System.Data.SqlClient.SqlException ex)
  995. {
  996. trans.Rollback();
  997. throw new Exception(ex.Message);
  998. }
  999. return ds;
  1000. }
  1001. }
  1002. private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
  1003. {
  1004. if (conn.State != ConnectionState.Open)
  1005. conn.Open();
  1006. cmd.Connection = conn;
  1007. cmd.CommandText = cmdText;
  1008. if (trans != null)
  1009. cmd.Transaction = trans;
  1010. cmd.CommandType = CommandType.Text;//cmdType;
  1011. if (cmdParms != null)
  1012. {
  1013. foreach (SqlParameter parameter in cmdParms)
  1014. {
  1015. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
  1016. (parameter.Value == null))
  1017. {
  1018. parameter.Value = DBNull.Value;
  1019. }
  1020. cmd.Parameters.Add(parameter);
  1021. }
  1022. }
  1023. }
  1024. #endregion
  1025. #region 存储过程操作
  1026. /// <summary>
  1027. /// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  1028. /// </summary>
  1029. /// <param name="storedProcName">存储过程名</param>
  1030. /// <param name="parameters">存储过程参数</param>
  1031. /// <returns>SqlDataReader</returns>
  1032. public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
  1033. {
  1034. SqlConnection connection = new SqlConnection(connectionString);
  1035. SqlDataReader returnReader;
  1036. connection.Open();
  1037. SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
  1038. command.CommandType = CommandType.StoredProcedure;
  1039. returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
  1040. return returnReader;
  1041. }
  1042. /// <summary>
  1043. /// 执行存储过程
  1044. /// </summary>
  1045. /// <param name="storedProcName">存储过程名</param>
  1046. /// <param name="parameters">存储过程参数</param>
  1047. /// <param name="tableName">DataSet结果中的表名</param>
  1048. /// <returns>DataSet</returns>
  1049. public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
  1050. {
  1051. using (SqlConnection connection = new SqlConnection(connectionString))
  1052. {
  1053. DataSet dataSet = new DataSet();
  1054. connection.Open();
  1055. SqlDataAdapter sqlDA = new SqlDataAdapter();
  1056. sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
  1057. sqlDA.Fill(dataSet, tableName);
  1058. connection.Close();
  1059. return dataSet;
  1060. }
  1061. }
  1062. public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName, int Times)
  1063. {
  1064. using (SqlConnection connection = new SqlConnection(connectionString))
  1065. {
  1066. DataSet dataSet = new DataSet();
  1067. connection.Open();
  1068. SqlDataAdapter sqlDA = new SqlDataAdapter();
  1069. sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
  1070. sqlDA.SelectCommand.CommandTimeout = Times;
  1071. sqlDA.Fill(dataSet, tableName);
  1072. connection.Close();
  1073. return dataSet;
  1074. }
  1075. }
  1076. /// <summary>
  1077. /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
  1078. /// </summary>
  1079. /// <param name="connection">数据库连接</param>
  1080. /// <param name="storedProcName">存储过程名</param>
  1081. /// <param name="parameters">存储过程参数</param>
  1082. /// <returns>SqlCommand</returns>
  1083. private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
  1084. {
  1085. SqlCommand command = new SqlCommand(storedProcName, connection);
  1086. command.CommandType = CommandType.StoredProcedure;
  1087. foreach (SqlParameter parameter in parameters)
  1088. {
  1089. if (parameter != null)
  1090. {
  1091. // 检查未分配值的输出参数,将其分配以DBNull.Value.
  1092. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
  1093. (parameter.Value == null))
  1094. {
  1095. parameter.Value = DBNull.Value;
  1096. }
  1097. command.Parameters.Add(parameter);
  1098. }
  1099. }
  1100. return command;
  1101. }
  1102. /// <summary>
  1103. /// 执行存储过程,返回影响的行数
  1104. /// </summary>
  1105. /// <param name="storedProcName">存储过程名</param>
  1106. /// <param name="parameters">存储过程参数</param>
  1107. /// <param name="rowsAffected">影响的行数</param>
  1108. /// <returns></returns>
  1109. public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
  1110. {
  1111. using (SqlConnection connection = new SqlConnection(connectionString))
  1112. {
  1113. int result;
  1114. connection.Open();
  1115. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  1116. rowsAffected = command.ExecuteNonQuery();
  1117. result = (int)command.Parameters["ReturnValue"].Value;
  1118. //Connection.Close();
  1119. return result;
  1120. }
  1121. }
  1122. /// <summary>
  1123. /// 创建 SqlCommand 对象实例(用来返回一个整数值)
  1124. /// </summary>
  1125. /// <param name="storedProcName">存储过程名</param>
  1126. /// <param name="parameters">存储过程参数</param>
  1127. /// <returns>SqlCommand 对象实例</returns>
  1128. private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
  1129. {
  1130. SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
  1131. command.Parameters.Add(new SqlParameter("ReturnValue",
  1132. SqlDbType.Int, 4, ParameterDirection.ReturnValue,
  1133. false, 0, 0, string.Empty, DataRowVersion.Default, null));
  1134. return command;
  1135. }
  1136. #endregion
  1137. /// <summary>
  1138. /// 执行多条SQL语句,实现数据库事务。
  1139. /// </summary>
  1140. /// <param name="SQLStringList">多条SQL语句</param>
  1141. public static int ExecuteSqlTran(List<String> SQLStringList, SqlConnection con)
  1142. {
  1143. if (con.State == ConnectionState.Closed)
  1144. {
  1145. con.Open();
  1146. }
  1147. SqlCommand cmd = new SqlCommand();
  1148. cmd.Connection = con;
  1149. SqlTransaction tx = con.BeginTransaction();
  1150. cmd.Transaction = tx;
  1151. try
  1152. {
  1153. int count = 0;
  1154. for (int n = 0; n < SQLStringList.Count; n++)
  1155. {
  1156. string strsql = SQLStringList[n];
  1157. if (strsql.Trim().Length > 1)
  1158. {
  1159. cmd.CommandText = strsql;
  1160. count += cmd.ExecuteNonQuery();
  1161. }
  1162. }
  1163. tx.Commit();
  1164. return count;
  1165. }
  1166. catch
  1167. {
  1168. tx.Rollback();
  1169. return 0;
  1170. }
  1171. }
  1172. #region 执行分页存储过程
  1173. /// <summary>
  1174. /// 执行存储过程Pagination分页
  1175. /// </summary>
  1176. /// <param name="TableName">表名或视图名或一个select语句</param>
  1177. /// <param name="PK">主键名</param>
  1178. /// <param name="Fields">返回的字段</param>
  1179. /// <param name="WhereStr">Where条件(and id=1 and name=222)</param>
  1180. /// <param name="OrderStr">排序(order by Id desc,time desc)</param>
  1181. /// <param name="PageSize">每页记录数</param>
  1182. /// <param name="PageIndex">页码</param>
  1183. /// <param name="IsCount">是否返回总记录数</param>
  1184. /// <param name="RecordCount">输出总记录数(不需返回时为0)</param>
  1185. /// <returns></returns>
  1186. public static DataTable RunPagination(string TableName, string PK, string Fields, string WhereStr, string OrderStr, int PageSize, int PageIndex, bool IsCount, out int RecordCount)
  1187. {
  1188. SqlParameter[] Paras =
  1189. {
  1190. new SqlParameter("@SqlTable",SqlDbType.VarChar,1000),
  1191. new SqlParameter("@SqlPK",SqlDbType.VarChar,50),
  1192. new SqlParameter("@SqlField",SqlDbType.VarChar,1000),
  1193. new SqlParameter("@SqlWhere",SqlDbType.VarChar,1000),
  1194. new SqlParameter("@SqlOrder",SqlDbType.VarChar,200),
  1195. new SqlParameter("@PageSize",SqlDbType.Int),
  1196. new SqlParameter("@PageIndex",SqlDbType.Int),
  1197. new SqlParameter("@IsCount",SqlDbType.Bit),
  1198. new SqlParameter("@RecordCount",SqlDbType.Int)
  1199. };
  1200. Paras[0].Value = TableName;
  1201. Paras[1].Value = PK;
  1202. Paras[2].Value = Fields;
  1203. Paras[3].Value = WhereStr;
  1204. Paras[4].Value = OrderStr;
  1205. Paras[5].Value = PageSize;
  1206. Paras[6].Value = PageIndex;
  1207. Paras[7].Value = Convert.ToInt32(IsCount);
  1208. Paras[8].Direction = ParameterDirection.Output;
  1209. DataSet PageSet = RunProcedure("[Pagination]", Paras, "Pager");
  1210. RecordCount = IsCount ? Convert.ToInt32(Paras[8].Value) : 0;
  1211. return PageSet.Tables["Pager"];
  1212. }
  1213. public static DataTable ExecuteDataTable(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
  1214. {
  1215. //create a command and prepare it for execution
  1216. SqlCommand cmd = new SqlCommand();
  1217. PrepareCommand(cmd, connection, (SqlTransaction)null, commandType, commandText, commandParameters);
  1218. //create the DataAdapter & DataTable
  1219. SqlDataAdapter da = new SqlDataAdapter(cmd);
  1220. DataTable dt = new DataTable();
  1221. //fill the DataTable using default values for DataTable names, etc.
  1222. da.Fill(dt);
  1223. // detach the SqlParameters from the command object, so they can be used again.
  1224. cmd.Parameters.Clear();
  1225. connection.Close();
  1226. connection.Dispose();
  1227. //return the DataTable
  1228. return dt;
  1229. }
  1230. /// <summary>
  1231. /// Prepare a command for execution
  1232. /// </summary>
  1233. /// <param name="cmd">SqlCommand object</param>
  1234. /// <param name="conn">SqlConnection object</param>
  1235. /// <param name="trans">SqlTransaction object</param>
  1236. /// <param name="cmdType">Cmd type e.g. stored procedure or text</param>
  1237. /// <param name="cmdText">Command text, e.g. Select * from Products</param>
  1238. /// <param name="cmdParms">SqlParameters to use in the command</param>
  1239. private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
  1240. {
  1241. if (conn.State != ConnectionState.Open)
  1242. conn.Open();
  1243. cmd.Connection = conn;
  1244. cmd.CommandText = cmdText;
  1245. cmd.CommandTimeout = 300;
  1246. if (trans != null)
  1247. cmd.Transaction = trans;
  1248. cmd.CommandType = cmdType;
  1249. if (cmdParms != null)
  1250. {
  1251. foreach (SqlParameter parm in cmdParms)
  1252. {
  1253. if (parm.Value == null)
  1254. {
  1255. parm.Value = DBNull.Value;
  1256. }
  1257. cmd.Parameters.Add(parm);
  1258. }
  1259. }
  1260. }
  1261. #endregion
  1262. }
  1263. }