SQLDBHandler.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755
  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Globalization;
  7. using System.Text;
  8. using System.Web;
  9. namespace ETD.Data
  10. {
  11. /// <summary>
  12. /// SQL Server 数据库处理类
  13. /// </summary>
  14. public class SQLDBHandler : IDBHandlerble, IDisposable
  15. {
  16. private Hashtable links;
  17. /// <summary>
  18. /// SqlCommand对象实例
  19. /// </summary>
  20. private SqlCommand sqlCommand;
  21. /// <summary>
  22. /// 声明sql 的数据库连接对象
  23. /// </summary>
  24. private SqlConnection sqlConnection;
  25. /// <summary>
  26. /// 取得整个系统的数据库都存放在一台服务器的数据库连接字符串
  27. /// </summary>
  28. private static string sqlDefaultConnectionString = ConfigurationManager.AppSettings["DefaultConnectionString"].Trim();
  29. /// <summary>
  30. /// 模块使用的字符串变量
  31. /// </summary>
  32. private static string sqlModuleConnectionString = string.Empty;
  33. /// <summary>
  34. /// 声明事务对象
  35. /// </summary>
  36. protected SqlTransaction sqlTransaction;
  37. /// <summary>
  38. /// 整个系统使用同一个数据库连接,通过web.config中DefultConnectionString中的连接字符串来连接数据库
  39. /// </summary>
  40. /// <remarks>取得web.config或者app.config中AppSetting中sql_default中的连接字符串</remarks>
  41. public SQLDBHandler()
  42. {
  43. this.links = null;
  44. this.GetLinkObject();
  45. string ConnectionString = this.GetDataLink("");
  46. if (ConfigurationManager.AppSettings["IsEncryptString"].Trim() == "1")
  47. {
  48. ConnectionString = new Security().Uncrypt(ConnectionString, "");
  49. }
  50. this.sqlConnection = new SqlConnection(ConnectionString);
  51. this.sqlCommand = this.sqlConnection.CreateCommand();
  52. }
  53. /// <summary>
  54. /// 不同模块使用不同的数据库连接,通过web.config中DefultConnectionString中的连接字符串来连接数据库
  55. /// </summary>
  56. /// <param name="module">模块关键字</param>
  57. public SQLDBHandler(string module)
  58. {
  59. string ConnectionString;
  60. Security security;
  61. this.links = null;
  62. this.GetLinkObject();
  63. string isSame = "0";
  64. if (this.links != null)
  65. {
  66. isSame = this.links["isSame"].ToString();
  67. }
  68. else
  69. {
  70. isSame = ConfigurationManager.AppSettings["IsSameDB"];
  71. }
  72. if (isSame.Trim() == "1")
  73. {
  74. ConnectionString = this.GetDataLink("");
  75. if (ConfigurationManager.AppSettings["IsEncryptString"].Trim() == "1")
  76. {
  77. security = new Security();
  78. ConnectionString = security.Uncrypt(ConnectionString, "");
  79. }
  80. this.sqlConnection = new SqlConnection(ConnectionString);
  81. }
  82. else if (module == string.Empty)
  83. {
  84. ConnectionString = this.GetDataLink("");
  85. if (ConfigurationManager.AppSettings["IsEncryptString"].Trim() == "1")
  86. {
  87. security = new Security();
  88. ConnectionString = security.Uncrypt(ConnectionString, "");
  89. }
  90. this.sqlConnection = new SqlConnection(ConnectionString);
  91. }
  92. else
  93. {
  94. sqlModuleConnectionString = this.GetDataLink(module);
  95. if (ConfigurationManager.AppSettings["IsEncryptString"].Trim() == "1")
  96. {
  97. sqlModuleConnectionString = new Security().Uncrypt(sqlModuleConnectionString, "");
  98. }
  99. this.sqlConnection = new SqlConnection(sqlModuleConnectionString);
  100. }
  101. this.sqlCommand = this.sqlConnection.CreateCommand();
  102. }
  103. /// 添加参数
  104. /// </summary>
  105. /// <param name="paramName">参数名称</param>
  106. /// <param name="paramType">参数类型</param>
  107. /// <param name="direction">参数方向</param>
  108. public void AddParameter(string paramName, DbType paramType, ParameterDirection direction)
  109. {
  110. SqlParameter splParameter = new SqlParameter();
  111. splParameter.ParameterName = paramName;
  112. splParameter.DbType = paramType;
  113. splParameter.Direction = direction;
  114. this.sqlCommand.Parameters.Add(splParameter);
  115. }
  116. /// <summary>
  117. /// 添加有长度的参数
  118. /// </summary>
  119. /// <param name="paramName">参数名称</param>
  120. /// <param name="p_objParamType">参数类型</param>
  121. /// <param name="p_intParamSize">参数长度</param>
  122. /// <param name="p_objDirection">参数方向</param>
  123. public void AddParameter(string paramName, DbType paramType, int paramSize, ParameterDirection direction)
  124. {
  125. SqlParameter splParameter = new SqlParameter();
  126. splParameter.ParameterName = paramName;
  127. splParameter.DbType = paramType;
  128. splParameter.Size = paramSize;
  129. splParameter.Direction = direction;
  130. this.sqlCommand.Parameters.Add(splParameter);
  131. }
  132. /// <summary>
  133. /// 重载-添加有长度的参数
  134. /// </summary>
  135. /// <param name="paramName">参数名称</param>
  136. /// <param name="p_strParamType">参数类型</param>
  137. /// <param name="p_intParamSize">参数长度</param>
  138. /// <param name="p_objDirection">参数方向</param>
  139. /// <param name="pValue">参数值</param>
  140. public void AddParameter(string paramName, DbType paramType, int paramSize, ParameterDirection direction, object pValue)
  141. {
  142. this.AddParameter(paramName, paramType, paramSize, direction);
  143. this.ModifyParameter(paramName, pValue);
  144. }
  145. /// <summary>
  146. /// 重载-添加参数
  147. /// </summary>
  148. /// <param name="paramName">参数名称</param>
  149. /// <param name="p_strParamType">参数类型</param>
  150. /// <param name="direction">参数方向</param>
  151. /// <param name="pValue">参数值</param>
  152. public void AddParameter(string paramName, DbType paramType, ParameterDirection direction, object pValue)
  153. {
  154. this.AddParameter(paramName, paramType, direction);
  155. this.ModifyParameter(paramName, pValue);
  156. }
  157. /// 添加参数
  158. /// </summary>
  159. /// <param name="paramName">参数名称</param>
  160. /// <param name="paramType">参数类型</param>
  161. /// <param name="direction">参数方向</param>
  162. public void AddParameter(string paramName, SqlDbType paramType, ParameterDirection direction)
  163. {
  164. SqlParameter splParameter = new SqlParameter();
  165. splParameter.ParameterName = paramName;
  166. splParameter.SqlDbType = paramType;
  167. splParameter.Direction = direction;
  168. this.sqlCommand.Parameters.Add(splParameter);
  169. }
  170. /// <summary>
  171. /// 添加有长度的参数
  172. /// </summary>
  173. /// <param name="paramName">参数名称</param>
  174. /// <param name="p_objParamType">参数类型</param>
  175. /// <param name="p_intParamSize">参数长度</param>
  176. /// <param name="p_objDirection">参数方向</param>
  177. public void AddParameter(string paramName, SqlDbType paramType, int paramSize, ParameterDirection direction)
  178. {
  179. SqlParameter splParameter = new SqlParameter();
  180. splParameter.ParameterName = paramName;
  181. splParameter.SqlDbType = paramType;
  182. splParameter.Size = paramSize;
  183. splParameter.Direction = direction;
  184. this.sqlCommand.Parameters.Add(splParameter);
  185. }
  186. /// <summary>
  187. /// 重载-添加有长度的参数
  188. /// </summary>
  189. /// <param name="paramName">参数名称</param>
  190. /// <param name="p_strParamType">参数类型</param>
  191. /// <param name="p_intParamSize">参数长度</param>
  192. /// <param name="p_objDirection">参数方向</param>
  193. /// <param name="pValue">参数值</param>
  194. public void AddParameter(string paramName, SqlDbType paramType, int paramSize, ParameterDirection direction, object pValue)
  195. {
  196. this.AddParameter(paramName, paramType, paramSize, direction);
  197. this.ModifyParameter(paramName, pValue);
  198. }
  199. /// <summary>
  200. /// 重载-添加参数
  201. /// </summary>
  202. /// <param name="paramName">参数名称</param>
  203. /// <param name="p_strParamType">参数类型</param>
  204. /// <param name="direction">参数方向</param>
  205. /// <param name="pValue">参数值</param>
  206. public void AddParameter(string paramName, SqlDbType paramType, ParameterDirection direction, object pValue)
  207. {
  208. this.AddParameter(paramName, paramType, direction);
  209. this.ModifyParameter(paramName, pValue);
  210. }
  211. /// <summary>
  212. /// 启动事务处理
  213. /// </summary>
  214. /// <returns>返回执行结果状态码</returns>
  215. public void BeginTransaction()
  216. {
  217. this.ConnectionOpen();
  218. if (null == this.sqlTransaction)
  219. {
  220. this.sqlTransaction = this.sqlConnection.BeginTransaction(IsolationLevel.ReadCommitted);
  221. }
  222. this.sqlCommand.Transaction = this.sqlTransaction;
  223. }
  224. /// <summary>
  225. /// 提交事务处理
  226. /// </summary>
  227. /// <returns>返回执行结果状态码</returns>
  228. public void CommitTransaction()
  229. {
  230. try
  231. {
  232. this.sqlTransaction.Commit();
  233. }
  234. finally
  235. {
  236. this.ConnectionClose();
  237. }
  238. }
  239. /// <summary>
  240. /// 关闭数据库连接
  241. /// </summary>
  242. public void ConnectionClose()
  243. {
  244. if (ConnectionState.Closed != this.sqlConnection.State)
  245. {
  246. this.sqlConnection.Close();
  247. this.sqlConnection.Dispose();
  248. }
  249. }
  250. /// <summary>
  251. /// 打开数据库连接
  252. /// </summary>
  253. public void ConnectionOpen()
  254. {
  255. if (ConnectionState.Closed == this.sqlConnection.State)
  256. {
  257. this.sqlConnection.Open();
  258. }
  259. }
  260. /// <summary>
  261. /// 释放资源
  262. /// </summary>
  263. public void Dispose()
  264. {
  265. if (this.sqlConnection != null)
  266. {
  267. this.sqlConnection.Dispose();
  268. }
  269. if (this.sqlCommand != null)
  270. {
  271. this.sqlCommand.Dispose();
  272. }
  273. if (this.sqlTransaction != null)
  274. {
  275. this.sqlTransaction.Dispose();
  276. }
  277. }
  278. /// <summary>
  279. /// 返回数据适配器
  280. /// </summary>
  281. /// <param name="commandText">查询命令</param>
  282. /// <returns>返回执行结果</returns>
  283. public IDbDataAdapter ExecuteAdapter(string commandText)
  284. {
  285. return this.ExecuteAdapter(commandText, CommandType.Text);
  286. }
  287. /// <summary>
  288. /// 重载-返回数据适配器(适应存储过程调用需求)
  289. /// </summary>
  290. /// <param name="commandText">查询命令</param>
  291. /// <param name="commandType">查询命令类型</param>
  292. /// <returns>返回执行结果</returns>
  293. public IDbDataAdapter ExecuteAdapter(string commandText, CommandType commandType)
  294. {
  295. this.sqlCommand.CommandText = commandText;
  296. this.sqlCommand.CommandType = commandType;
  297. this.ConnectionOpen();
  298. return new SqlDataAdapter(this.sqlCommand);
  299. }
  300. /// <summary>
  301. /// 返回数据集
  302. /// </summary>
  303. /// <param name="commandText">查询命令</param>
  304. /// <returns>返回执行结果</returns>
  305. public DataSet ExecuteDataSet(string commandText)
  306. {
  307. return this.ExecuteDataSet(commandText, CommandType.Text);
  308. }
  309. /// <summary>
  310. /// 重载-返回数据集(适应存储过程调用需求)
  311. /// </summary>
  312. /// <param name="commandText">查询命令</param>
  313. /// <param name="commandType">查询命令类型</param>
  314. /// <returns>返回执行结果</returns>
  315. public DataSet ExecuteDataSet(string commandText, CommandType commandType)
  316. {
  317. return this.ExecuteDataSet(commandText, commandType, "");
  318. }
  319. /// <summary>
  320. /// 重载-返回数据集(适应存储过程调用需求)
  321. /// </summary>
  322. /// <param name="commandText">查询命令</param>
  323. /// <param name="commandType">查询命令类型</param>
  324. /// <param name="tableName">表名</param>
  325. /// <returns>返回执行结果</returns>
  326. public DataSet ExecuteDataSet(string commandText, CommandType commandType, string tableName)
  327. {
  328. return this.ExecuteDataSet("", commandText, commandType, "");
  329. }
  330. /// <summary>
  331. /// 重载-返回数据集(适应存储过程调用需求)
  332. /// </summary>
  333. /// <param name="dataSetName">DataSet 名称</param>
  334. /// <param name="commandText">查询命令</param>
  335. /// <param name="commandType">查询命令类型</param>
  336. /// <param name="tableName">表名</param>
  337. /// <returns>返回执行结果</returns>
  338. public DataSet ExecuteDataSet(string dataSetName, string commandText, CommandType commandType, string tableName)
  339. {
  340. DataSet dstResult = new DataSet();
  341. dstResult.Locale = CultureInfo.InvariantCulture;
  342. if (dataSetName != string.Empty)
  343. {
  344. dstResult.DataSetName = dataSetName;
  345. }
  346. this.sqlCommand.CommandText = commandText;
  347. this.sqlCommand.CommandType = commandType;
  348. this.ConnectionOpen();
  349. if (tableName != string.Empty)
  350. {
  351. SqlDataAdapter sqlAdapter = new SqlDataAdapter(this.sqlCommand);
  352. sqlAdapter.Fill(dstResult, tableName);
  353. }
  354. else
  355. {
  356. new SqlDataAdapter(this.sqlCommand).Fill(dstResult);
  357. }
  358. this.ConnectionClose();
  359. return dstResult;
  360. }
  361. /// <summary>
  362. /// 返回数据表
  363. /// </summary>
  364. /// <param name="commandText">查询命令</param>
  365. /// <returns>返回执行结果</returns>
  366. public DataTable ExecuteDataTable(string commandText)
  367. {
  368. return this.ExecuteDataTable(commandText, CommandType.Text);
  369. }
  370. /// <summary>
  371. /// 返回数据表
  372. /// </summary>
  373. /// <param name="commandText"></param>
  374. /// <param name="isCloseConnection"></param>
  375. /// <returns>返回执行结果</returns>
  376. public DataTable ExecuteDataTable(string commandText, bool isCloseConnection)
  377. {
  378. return this.ExecuteDataTable(commandText, CommandType.Text, "", isCloseConnection);
  379. }
  380. /// <summary>
  381. /// 重载-返回数据表
  382. /// </summary>
  383. /// <param name="commandText">查询命令</param>
  384. /// <param name="commandType">查询命令类型</param>
  385. /// <returns>返回执行结果</returns>
  386. public DataTable ExecuteDataTable(string commandText, CommandType commandType)
  387. {
  388. return this.ExecuteDataTable(commandText, commandType, "");
  389. }
  390. /// <summary>
  391. /// 重载-返回数据表
  392. /// </summary>
  393. /// <param name="commandText">查询命令</param>
  394. /// <param name="commandType">查询命令类型</param>
  395. /// <param name="tableName">表名</param>
  396. /// <returns>返回执行结果</returns>
  397. public DataTable ExecuteDataTable(string commandText, CommandType commandType, string tableName)
  398. {
  399. return this.ExecuteDataTable(commandText, commandType, tableName, false);
  400. }
  401. /// <summary>
  402. /// 重载-返回数据表
  403. /// </summary>
  404. /// <param name="commandText">查询命令</param>
  405. /// <param name="commandType">查询命令类型</param>
  406. /// <param name="tableName">表名</param>
  407. /// <param name="isCloseConnection">是否关闭数据库</param>
  408. /// <returns>返回执行结果</returns>
  409. public DataTable ExecuteDataTable(string commandText, CommandType commandType, string tableName, bool isCloseConnection)
  410. {
  411. DataTable dtblResult = new DataTable();
  412. dtblResult.Locale = CultureInfo.InvariantCulture;
  413. if (tableName != string.Empty)
  414. {
  415. dtblResult.TableName = tableName;
  416. }
  417. this.sqlCommand.CommandText = commandText;
  418. this.sqlCommand.CommandType = commandType;
  419. this.ConnectionOpen();
  420. new SqlDataAdapter(this.sqlCommand).Fill(dtblResult);
  421. if (isCloseConnection)
  422. {
  423. this.ConnectionClose();
  424. }
  425. return dtblResult;
  426. }
  427. /// <summary>
  428. /// 返回数据表(分页)
  429. /// </summary>
  430. /// <param name="page">当前页</param>
  431. /// <param name="pageSize">每页显示数</param>
  432. /// <param name="recordCount">总记录数</param>
  433. /// <param name="strFields">需要查询的字段</param>
  434. /// <param name="strOderBy">排序字段,例如: id asc,name desc 不带order by</param>
  435. /// <param name="strTableName">查询表名称</param>
  436. /// <returns></returns>
  437. public DataTable ExecuteDataTable(int page, int pageSize, ref int recordCount, string strFields, string strOrderBy, string strTableName)
  438. {
  439. recordCount = Convert.ToInt32(this.ExecuteScalar("select count(1) from " + strTableName + " as t"));
  440. StringBuilder sb = new StringBuilder("select " + strFields + " from (");
  441. sb.Append(string.Concat(new object[] { " select row_number() over( order by ", strOrderBy, " ) as rowrumber,* from ", strTableName, " as a) as t where t.rowrumber between ", (page - 1) * pageSize, 1, " and ", page * pageSize, " order by t.rowrumber " }));
  442. return this.ExecuteDataTable(sb.ToString());
  443. }
  444. /// <summary>
  445. /// 执行无返回类型数据查询(返回影响行数)
  446. /// </summary>
  447. /// <param name="commandText">查询命令(SQL语句)</param>
  448. /// <returns>返回执行结果影响行数</returns>
  449. public int ExecuteNonQuery(string commandText)
  450. {
  451. return this.ExecuteNonQuery(commandText, CommandType.Text);
  452. }
  453. /// <summary>
  454. /// 执行无返回类型数据查询(返回影响行数)
  455. /// </summary>
  456. /// <param name="commandText">查询命令(SQL语句)</param>
  457. /// <param name="isCloseConnection">是否关闭数据连结,true: 关闭,false: 不关闭</param>
  458. /// <returns>返回执行结果影响行数</returns>
  459. public int ExecuteNonQuery(string commandText, bool isCloseConnection)
  460. {
  461. return this.ExecuteNonQuery(commandText, CommandType.Text, isCloseConnection);
  462. }
  463. /// <summary>
  464. /// 重载-无返回类型数据查询(适应存储过程调用需求且返回影响行数)
  465. /// </summary>
  466. /// <param name="commandText">查询命令</param>
  467. /// <param name="commandType">查询命令类型</param>
  468. /// <returns>返回执行结果影响行数</returns>
  469. public int ExecuteNonQuery(string commandText, CommandType commandType)
  470. {
  471. return this.ExecuteNonQuery(commandText, commandType, false);
  472. }
  473. /// <summary>
  474. /// 重载-无返回类型数据查询(适应存储过程调用需求且返回影响行数)
  475. /// </summary>
  476. /// <param name="commandText">查询命令</param>
  477. /// <param name="commandType">查询命令类型</param>
  478. /// <param name="isCloseConnection">是否关闭数据连结,true: 关闭,false: 不关闭</param>
  479. /// <returns>返回执行结果影响行数</returns>
  480. public int ExecuteNonQuery(string commandText, CommandType commandType, bool isCloseConnection)
  481. {
  482. int row;
  483. this.sqlCommand.CommandText = commandText;
  484. this.sqlCommand.CommandType = commandType;
  485. try
  486. {
  487. this.ConnectionOpen();
  488. row = this.sqlCommand.ExecuteNonQuery();
  489. }
  490. finally
  491. {
  492. if (isCloseConnection)
  493. {
  494. this.ConnectionClose();
  495. }
  496. }
  497. return row;
  498. }
  499. /// <summary>
  500. /// 返回向前只读数据集查询
  501. /// </summary>
  502. /// <param name="commandText">查询命令</param>
  503. /// <returns>返回执行结果</returns>
  504. public IDataReader ExecuteReader(string commandText)
  505. {
  506. return this.ExecuteReader(commandText, CommandType.Text);
  507. }
  508. /// <summary>
  509. /// 重载-返回向前只读数据集查询(适应存储过程调用需求)
  510. /// </summary>
  511. /// <param name="commandText">查询命令</param>
  512. /// <param name="commandType">查询命令类型</param>
  513. /// <returns>返回执行结果</returns>
  514. public IDataReader ExecuteReader(string commandText, CommandType commandType)
  515. {
  516. return this.ExecuteReader(commandText, commandType, CommandBehavior.CloseConnection);
  517. }
  518. /// <summary>
  519. /// 重载-返回向前只读数据集查询(适应存储过程调用需求)
  520. /// </summary>
  521. /// <param name="commandText">查询命令</param>
  522. /// <param name="commandType">查询命令类型</param>
  523. /// <param name="commandBehavior">提供对查询结果和查询对数据库的影响的说明</param>
  524. /// <returns>返回执行结果</returns>
  525. public IDataReader ExecuteReader(string commandText, CommandType commandType, CommandBehavior commandBehavior)
  526. {
  527. IDataReader row;
  528. this.sqlCommand.CommandText = commandText;
  529. this.sqlCommand.CommandType = commandType;
  530. this.ConnectionOpen();
  531. try
  532. {
  533. row = this.sqlCommand.ExecuteReader(commandBehavior);
  534. }
  535. catch (SqlException ex)
  536. {
  537. this.ConnectionClose();
  538. throw ex;
  539. }
  540. return row;
  541. }
  542. public object ExecuteScalar(string commandText)
  543. {
  544. return this.ExecuteScalar(commandText, false);
  545. }
  546. /// <summary>
  547. /// 返回第一行第一列结果的数据查询
  548. /// </summary>
  549. /// <param name="commandText">查询命令</param>
  550. /// <param name="isCloseConnection">是否关闭数据连结,true: 关闭,false: 不关闭</param>
  551. /// <returns>返回查询结果</returns>
  552. public object ExecuteScalar(string commandText, bool isCloseConnection)
  553. {
  554. return this.ExecuteScalar(commandText, CommandType.Text, isCloseConnection);
  555. }
  556. /// <summary>
  557. /// 重载-返回第一行第一列结果的数据查询(适应存储过程调用需求)
  558. /// </summary>
  559. /// <param name="commandText">查询命令</param>
  560. /// <param name="commandType">查询命令类型</param>
  561. /// <param name="isCloseConnection">是否关闭数据连结,true: 关闭,false: 不关闭</param>
  562. /// <returns>返回查询结果</returns>
  563. public object ExecuteScalar(string commandText, CommandType commandType, bool isCloseConnection)
  564. {
  565. object row;
  566. this.sqlCommand.CommandText = commandText;
  567. this.sqlCommand.CommandType = commandType;
  568. this.ConnectionOpen();
  569. try
  570. {
  571. row = this.sqlCommand.ExecuteScalar();
  572. }
  573. finally
  574. {
  575. if (isCloseConnection)
  576. {
  577. this.ConnectionClose();
  578. }
  579. }
  580. return row;
  581. }
  582. /// <summary>
  583. /// 获得数据库连接字符串
  584. /// </summary>
  585. /// <param name="ModuleName">模块名称</param>
  586. /// <returns></returns>
  587. public string GetDataLink(string ModuleName)
  588. {
  589. if (this.links != null)
  590. {
  591. if (ModuleName == string.Empty)
  592. {
  593. ModuleName = "default";
  594. }
  595. return this.links[ModuleName].ToString();
  596. }
  597. if (ModuleName == string.Empty)
  598. {
  599. return sqlDefaultConnectionString;
  600. }
  601. return ConfigurationManager.AppSettings[ModuleName + "ConnectionString"].Trim();
  602. }
  603. /// <summary>
  604. ///
  605. /// </summary>
  606. private void GetLinkObject()
  607. {
  608. try
  609. {
  610. if (HttpContext.Current.Session["uLinks"] != null)
  611. {
  612. this.links = HttpContext.Current.Session["uLinks"] as Hashtable;
  613. if (this.links.Count == 0)
  614. {
  615. this.links = null;
  616. }
  617. }
  618. }
  619. catch
  620. {
  621. }
  622. }
  623. /// <summary>
  624. /// 提取参数值
  625. /// </summary>
  626. /// <param name="paramName">参数名称</param>
  627. /// <returns>返回执行结果状态码</returns>
  628. public object GetParameter(string paramName)
  629. {
  630. if (this.sqlCommand.Parameters.Contains(paramName))
  631. {
  632. return this.sqlCommand.Parameters[paramName].Value;
  633. }
  634. return null;
  635. }
  636. /// <summary>
  637. /// 将DataTable添加到DataSet中
  638. /// </summary>
  639. /// <param name="dataSet">DataSet对象</param>
  640. /// <param name="tableNames">表名数组</param>
  641. public void LoadDataSet(DataSet dataSet, string[] tableNames)
  642. {
  643. for (int i = 0; i < tableNames.Length; i++)
  644. {
  645. this.LoadDataSet(dataSet, tableNames[i]);
  646. }
  647. }
  648. /// <summary>
  649. /// 将DataTable添加到DataSet中
  650. /// </summary>
  651. /// <param name="dataSet">DataSet对象</param>
  652. /// <param name="tableName">表名</param>
  653. public void LoadDataSet(DataSet dataSet, string tableName)
  654. {
  655. dataSet.Tables.Add(tableName);
  656. }
  657. /// <summary>
  658. /// 修改参数值
  659. /// </summary>
  660. /// <param name="p_strParamName">参数名称</param>
  661. /// <param name="p_objValue">参数值</param>
  662. public void ModifyParameter(string paramName, object pValue)
  663. {
  664. if ((this.sqlCommand.Parameters[paramName].SqlDbType == SqlDbType.UniqueIdentifier) && (pValue.GetType() == typeof(sbyte)))
  665. {
  666. pValue = new Guid(pValue.ToString());
  667. }
  668. if (-1 != this.sqlCommand.Parameters.IndexOf(paramName))
  669. {
  670. this.sqlCommand.Parameters[paramName].Value = pValue;
  671. }
  672. }
  673. /// <summary>
  674. /// 移除所有的参数
  675. /// </summary>
  676. public void RemoveAllParameters()
  677. {
  678. this.sqlCommand.Parameters.Clear();
  679. }
  680. /// <summary>
  681. /// 移除参数
  682. /// </summary>
  683. /// <param name="p_strParamName">参数名称</param>
  684. public void RemoveParameter(string paramName)
  685. {
  686. this.sqlCommand.Parameters.RemoveAt(paramName);
  687. }
  688. /// <summary>
  689. /// 回滚事务处理
  690. /// </summary>
  691. /// <returns>返回执行结果状态码</returns>
  692. public void RollbackTransaction()
  693. {
  694. try
  695. {
  696. this.sqlTransaction.Rollback();
  697. }
  698. finally
  699. {
  700. this.ConnectionClose();
  701. }
  702. }
  703. }
  704. }