经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
DBHelper类连接数据库
来源:cnblogs  作者:Mr_Dan  时间:2018/12/17 9:51:44  对本文有异议
  1.  

 1、执行多条SQL语句,实现数据库事务

 2、执行一条计算查询结果语句,返回查询结果(object)

 3、执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )

 4、执行查询语句,返回DataTable

 5、执行查询语句,返回DataSet

 6、执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )

 7、执行存储过程,带参数

 8、构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)

 9、执行存储过程,返回影响的行数

10、创建 SqlCommand 对象实例(用来返回一个整数值)

  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 DAL
  10. {
  11. /// <summary>
  12. /// 数据访问抽象基础类
  13. /// Copyright (C) 2004-2008 By LiTianPing
  14. /// </summary>
  15. public abstract class DbHelperSQL
  16. {
  17. //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
  18. //private const string connectionString = "Data Source=.;Initial Catalog=数据库名称;User ID=sa;Password=数据库密码";
  19. public static string connectionString = ConfigurationManager.ConnectionStrings["Data"].ConnectionString;
  20. public DbHelperSQL()
  21. {
  22. }
  23. #region 公用方法
  24. /// <summary>
  25. /// 判断是否存在某表的某个字段
  26. /// </summary>
  27. /// <param name="tableName">表名称</param>
  28. /// <param name="columnName">列名称</param>
  29. /// <returns>是否存在</returns>
  30. public static bool ColumnExists(string tableName, string columnName)
  31. {
  32. string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
  33. object res = GetSingle(sql);
  34. if (res == null)
  35. {
  36. return false;
  37. }
  38. return Convert.ToInt32(res) > 0;
  39. }
  40. public static int GetMaxID(string FieldName, string TableName)
  41. {
  42. string strsql = "select max(" + FieldName + ")+1 from " + TableName;
  43. object obj = GetSingle(strsql);
  44. if (obj == null)
  45. {
  46. return 1;
  47. }
  48. else
  49. {
  50. return int.Parse(obj.ToString());
  51. }
  52. }
  53. public static bool Exists(string strSql)
  54. {
  55. object obj = GetSingle(strSql);
  56. int cmdresult;
  57. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  58. {
  59. cmdresult = 0;
  60. }
  61. else
  62. {
  63. cmdresult = int.Parse(obj.ToString());
  64. }
  65. if (cmdresult == 0)
  66. {
  67. return false;
  68. }
  69. else
  70. {
  71. return true;
  72. }
  73. }
  74. /// <summary>
  75. /// 表是否存在
  76. /// </summary>
  77. /// <param name="TableName"></param>
  78. /// <returns></returns>
  79. public static bool TabExists(string TableName)
  80. {
  81. string strsql = "select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";
  82. //string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[" + TableName + "]') AND type in (N'U')";
  83. object obj = GetSingle(strsql);
  84. int cmdresult;
  85. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  86. {
  87. cmdresult = 0;
  88. }
  89. else
  90. {
  91. cmdresult = int.Parse(obj.ToString());
  92. }
  93. if (cmdresult == 0)
  94. {
  95. return false;
  96. }
  97. else
  98. {
  99. return true;
  100. }
  101. }
  102. public static bool Exists(string strSql, params SqlParameter[] cmdParms)
  103. {
  104. object obj = GetSingle(strSql, cmdParms);
  105. int cmdresult;
  106. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  107. {
  108. cmdresult = 0;
  109. }
  110. else
  111. {
  112. cmdresult = int.Parse(obj.ToString());
  113. }
  114. if (cmdresult == 0)
  115. {
  116. return false;
  117. }
  118. else
  119. {
  120. return true;
  121. }
  122. }
  123. #endregion
  124.  
  125. #region 执行简单SQL语句
  126.  
  127. /// <summary>
  128. /// 执行SQL语句,返回影响的记录数
  129. /// </summary>
  130. /// <param name="SQLString">SQL语句</param>
  131. /// <returns>影响的记录数</returns>
  132. public static int ExecuteSql(string SQLString)
  133. {
  134. using (SqlConnection connection = new SqlConnection(connectionString))
  135. {
  136. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  137. {
  138. try
  139. {
  140. connection.Open();
  141. int rows = cmd.ExecuteNonQuery();
  142. return rows;
  143. }
  144. catch (System.Data.SqlClient.SqlException e)
  145. {
  146. connection.Close();
  147. throw e;
  148. }
  149. }
  150. }
  151. }
  152. public static int ExecuteSqlByTime(string SQLString, int Times)
  153. {
  154. using (SqlConnection connection = new SqlConnection(connectionString))
  155. {
  156. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  157. {
  158. try
  159. {
  160. connection.Open();
  161. cmd.CommandTimeout = Times;
  162. int rows = cmd.ExecuteNonQuery();
  163. return rows;
  164. }
  165. catch (System.Data.SqlClient.SqlException e)
  166. {
  167. connection.Close();
  168. throw e;
  169. }
  170. }
  171. }
  172. }
  173. /// <summary>
  174. /// 执行多条SQL语句,实现数据库事务。
  175. /// </summary>
  176. /// <param name="SQLStringList">多条SQL语句</param>
  177. public static int ExecuteSqlTran(List<String> SQLStringList)
  178. {
  179. using (SqlConnection conn = new SqlConnection(connectionString))
  180. {
  181. conn.Open();
  182. SqlCommand cmd = new SqlCommand();
  183. cmd.Connection = conn;
  184. SqlTransaction tx = conn.BeginTransaction();
  185. cmd.Transaction = tx;
  186. try
  187. {
  188. int count = 0;
  189. for (int n = 0; n < SQLStringList.Count; n++)
  190. {
  191. string strsql = SQLStringList[n];
  192. if (strsql.Trim().Length > 1)
  193. {
  194. cmd.CommandText = strsql;
  195. count += cmd.ExecuteNonQuery();
  196. }
  197. }
  198. tx.Commit();
  199. return count;
  200. }
  201. catch
  202. {
  203. tx.Rollback();
  204. return 0;
  205. }
  206. }
  207. }
  208. /// <summary>
  209. /// 执行带一个存储过程参数的的SQL语句。
  210. /// </summary>
  211. /// <param name="SQLString">SQL语句</param>
  212. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  213. /// <returns>影响的记录数</returns>
  214. public static int ExecuteSql(string SQLString, string content)
  215. {
  216. using (SqlConnection connection = new SqlConnection(connectionString))
  217. {
  218. SqlCommand cmd = new SqlCommand(SQLString, connection);
  219. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
  220. myParameter.Value = content;
  221. cmd.Parameters.Add(myParameter);
  222. try
  223. {
  224. connection.Open();
  225. int rows = cmd.ExecuteNonQuery();
  226. return rows;
  227. }
  228. catch (System.Data.SqlClient.SqlException e)
  229. {
  230. throw e;
  231. }
  232. finally
  233. {
  234. cmd.Dispose();
  235. connection.Close();
  236. }
  237. }
  238. }
  239. /// <summary>
  240. /// 执行带一个存储过程参数的的SQL语句。
  241. /// </summary>
  242. /// <param name="SQLString">SQL语句</param>
  243. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  244. /// <returns>影响的记录数</returns>
  245. public static object ExecuteSqlGet(string SQLString, string content)
  246. {
  247. using (SqlConnection connection = new SqlConnection(connectionString))
  248. {
  249. SqlCommand cmd = new SqlCommand(SQLString, connection);
  250. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
  251. myParameter.Value = content;
  252. cmd.Parameters.Add(myParameter);
  253. try
  254. {
  255. connection.Open();
  256. object obj = cmd.ExecuteScalar();
  257. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  258. {
  259. return null;
  260. }
  261. else
  262. {
  263. return obj;
  264. }
  265. }
  266. catch (System.Data.SqlClient.SqlException e)
  267. {
  268. throw e;
  269. }
  270. finally
  271. {
  272. cmd.Dispose();
  273. connection.Close();
  274. }
  275. }
  276. }
  277. /// <summary>
  278. /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
  279. /// </summary>
  280. /// <param name="strSQL">SQL语句</param>
  281. /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
  282. /// <returns>影响的记录数</returns>
  283. public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
  284. {
  285. using (SqlConnection connection = new SqlConnection(connectionString))
  286. {
  287. SqlCommand cmd = new SqlCommand(strSQL, connection);
  288. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
  289. myParameter.Value = fs;
  290. cmd.Parameters.Add(myParameter);
  291. try
  292. {
  293. connection.Open();
  294. int rows = cmd.ExecuteNonQuery();
  295. return rows;
  296. }
  297. catch (System.Data.SqlClient.SqlException e)
  298. {
  299. throw e;
  300. }
  301. finally
  302. {
  303. cmd.Dispose();
  304. connection.Close();
  305. }
  306. }
  307. }
  308. /// <summary>
  309. /// 执行一条计算查询结果语句,返回查询结果(object)。
  310. /// </summary>
  311. /// <param name="SQLString">计算查询结果语句</param>
  312. /// <returns>查询结果(object)</returns>
  313. public static object GetSingle(string SQLString)
  314. {
  315. using (SqlConnection connection = new SqlConnection(connectionString))
  316. {
  317. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  318. {
  319. try
  320. {
  321. connection.Open();
  322. object obj = cmd.ExecuteScalar();
  323. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  324. {
  325. return null;
  326. }
  327. else
  328. {
  329. return obj;
  330. }
  331. }
  332. catch (System.Data.SqlClient.SqlException e)
  333. {
  334. connection.Close();
  335. throw e;
  336. }
  337. }
  338. }
  339. }
  340. public static object GetSingle(string SQLString, int Times)
  341. {
  342. using (SqlConnection connection = new SqlConnection(connectionString))
  343. {
  344. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  345. {
  346. try
  347. {
  348. connection.Open();
  349. cmd.CommandTimeout = Times;
  350. object obj = cmd.ExecuteScalar();
  351. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  352. {
  353. return null;
  354. }
  355. else
  356. {
  357. return obj;
  358. }
  359. }
  360. catch (System.Data.SqlClient.SqlException e)
  361. {
  362. connection.Close();
  363. throw e;
  364. }
  365. }
  366. }
  367. }
  368. /// <summary>
  369. /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  370. /// </summary>
  371. /// <param name="strSQL">查询语句</param>
  372. /// <returns>SqlDataReader</returns>
  373. public static SqlDataReader ExecuteReader(string strSQL)
  374. {
  375. SqlConnection connection = new SqlConnection(connectionString);
  376. SqlCommand cmd = new SqlCommand(strSQL, connection);
  377. try
  378. {
  379. connection.Open();
  380. SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  381. return myReader;
  382. }
  383. catch (System.Data.SqlClient.SqlException e)
  384. {
  385. throw e;
  386. }
  387. }
  388. /// <summary>
  389. /// 执行查询语句,返回DataSet
  390. /// </summary>
  391. /// <param name="SQLString">查询语句</param>
  392. /// <returns>DataSet</returns>
  393. public static DataSet Query(string SQLString)
  394. {
  395. using (SqlConnection connection = new SqlConnection(connectionString))
  396. {
  397. DataSet ds = new DataSet();
  398. try
  399. {
  400. connection.Open();
  401. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  402. command.Fill(ds, "ds");
  403. }
  404. catch (System.Data.SqlClient.SqlException ex)
  405. {
  406. throw new Exception(ex.Message);
  407. }
  408. return ds;
  409. }
  410. }
  411. /// <summary>
  412. /// 执行查询语句,返回pageDataSet
  413. /// </summary>
  414. /// <param name="SQLString">查询语句</param>
  415. /// <returns>DataSet</returns>
  416. public static DataSet pageQuery(string SQLString, int PageIndex, int PageSize)
  417. {
  418. using (SqlConnection connection = new SqlConnection(connectionString))
  419. {
  420. DataSet ds = new DataSet();
  421. try
  422. {
  423. connection.Open();
  424. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  425. command.Fill(ds, PageIndex, PageSize, "ds");
  426. }
  427. catch (System.Data.SqlClient.SqlException ex)
  428. {
  429. throw new Exception(ex.Message);
  430. }
  431. return ds;
  432. }
  433. }
  434. public static DataSet Query(string SQLString, int Times)
  435. {
  436. using (SqlConnection connection = new SqlConnection(connectionString))
  437. {
  438. DataSet ds = new DataSet();
  439. try
  440. {
  441. connection.Open();
  442. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  443. command.SelectCommand.CommandTimeout = Times;
  444. command.Fill(ds, "ds");
  445. }
  446. catch (System.Data.SqlClient.SqlException ex)
  447. {
  448. throw new Exception(ex.Message);
  449. }
  450. return ds;
  451. }
  452. }
  453. #endregion
  454.  
  455. #region 执行带参数的SQL语句
  456.  
  457. /// <summary>
  458. /// 执行SQL语句,返回影响的记录数
  459. /// </summary>
  460. /// <param name="SQLString">SQL语句</param>
  461. /// <returns>影响的记录数</returns>
  462. public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
  463. {
  464. using (SqlConnection connection = new SqlConnection(connectionString))
  465. {
  466. using (SqlCommand cmd = new SqlCommand())
  467. {
  468. try
  469. {
  470. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  471. int rows = cmd.ExecuteNonQuery();
  472. cmd.Parameters.Clear();
  473. return rows;
  474. }
  475. catch (System.Data.SqlClient.SqlException e)
  476. {
  477. throw e;
  478. }
  479. }
  480. }
  481. }
  482. /// <summary>
  483. /// 执行多条SQL语句,实现数据库事务。
  484. /// </summary>
  485. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  486. public static void ExecuteSqlTran(Hashtable SQLStringList)
  487. {
  488. using (SqlConnection conn = new SqlConnection(connectionString))
  489. {
  490. conn.Open();
  491. using (SqlTransaction trans = conn.BeginTransaction())
  492. {
  493. SqlCommand cmd = new SqlCommand();
  494. try
  495. {
  496. //循环
  497. foreach (DictionaryEntry myDE in SQLStringList)
  498. {
  499. string cmdText = myDE.Key.ToString();
  500. SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
  501. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  502. int val = cmd.ExecuteNonQuery();
  503. cmd.Parameters.Clear();
  504. }
  505. trans.Commit();
  506. }
  507. catch
  508. {
  509. trans.Rollback();
  510. throw;
  511. }
  512. }
  513. }
  514. }
  515. /// <summary>
  516. /// 执行多条SQL语句,实现数据库事务。
  517. /// </summary>
  518. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  519. public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)
  520. {
  521. using (SqlConnection conn = new SqlConnection(connectionString))
  522. {
  523. conn.Open();
  524. using (SqlTransaction trans = conn.BeginTransaction())
  525. {
  526. SqlCommand cmd = new SqlCommand();
  527. try
  528. {
  529. int indentity = 0;
  530. //循环
  531. foreach (DictionaryEntry myDE in SQLStringList)
  532. {
  533. string cmdText = myDE.Key.ToString();
  534. SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
  535. foreach (SqlParameter q in cmdParms)
  536. {
  537. if (q.Direction == ParameterDirection.InputOutput)
  538. {
  539. q.Value = indentity;
  540. }
  541. }
  542. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  543. int val = cmd.ExecuteNonQuery();
  544. foreach (SqlParameter q in cmdParms)
  545. {
  546. if (q.Direction == ParameterDirection.Output)
  547. {
  548. indentity = Convert.ToInt32(q.Value);
  549. }
  550. }
  551. cmd.Parameters.Clear();
  552. }
  553. trans.Commit();
  554. }
  555. catch
  556. {
  557. trans.Rollback();
  558. throw;
  559. }
  560. }
  561. }
  562. }
  563. /// <summary>
  564. /// 执行一条计算查询结果语句,返回查询结果(object)。
  565. /// </summary>
  566. /// <param name="SQLString">计算查询结果语句</param>
  567. /// <returns>查询结果(object)</returns>
  568. public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
  569. {
  570. using (SqlConnection connection = new SqlConnection(connectionString))
  571. {
  572. using (SqlCommand cmd = new SqlCommand())
  573. {
  574. try
  575. {
  576. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  577. object obj = cmd.ExecuteScalar();
  578. cmd.Parameters.Clear();
  579. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  580. {
  581. return null;
  582. }
  583. else
  584. {
  585. return obj;
  586. }
  587. }
  588. catch (System.Data.SqlClient.SqlException e)
  589. {
  590. throw e;
  591. }
  592. }
  593. }
  594. }
  595. /// <summary>
  596. /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  597. /// </summary>
  598. /// <param name="strSQL">查询语句</param>
  599. /// <returns>SqlDataReader</returns>
  600. public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
  601. {
  602. SqlConnection connection = new SqlConnection(connectionString);
  603. SqlCommand cmd = new SqlCommand();
  604. try
  605. {
  606. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  607. SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  608. cmd.Parameters.Clear();
  609. return myReader;
  610. }
  611. catch (System.Data.SqlClient.SqlException e)
  612. {
  613. throw e;
  614. }
  615. // finally
  616. // {
  617. // cmd.Dispose();
  618. // connection.Close();
  619. // }
  620. }
  621. /// <summary>
  622. /// 执行查询语句,返回DataTable
  623. /// </summary>
  624. /// <param name="SQLString">查询语句</param>
  625. /// <returns>DataTable</returns>
  626. public static DataTable GetDataTable(string SQLString, params SqlParameter[] cmdParms)
  627. {
  628. using (SqlConnection connection = new SqlConnection(connectionString))
  629. {
  630. SqlCommand cmd = new SqlCommand();
  631. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  632. using (SqlDataAdapter da = new SqlDataAdapter(cmd))
  633. {
  634. DataSet ds = new DataSet();
  635. try
  636. {
  637. da.Fill(ds, "ds");
  638. cmd.Parameters.Clear();
  639. }
  640. catch (System.Data.SqlClient.SqlException ex)
  641. {
  642. throw new Exception(ex.Message);
  643. }
  644. return ds.Tables[0];
  645. }
  646. }
  647. }
  648. /// <summary>
  649. /// 执行查询语句,返回DataSet
  650. /// </summary>
  651. /// <param name="SQLString">查询语句</param>
  652. /// <returns>DataSet</returns>
  653. public static DataSet PageQuery(string SQLString, int PageIndex, int PageSize, params SqlParameter[] cmdParms)
  654. {
  655. using (SqlConnection connection = new SqlConnection(connectionString))
  656. {
  657. SqlCommand cmd = new SqlCommand();
  658. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  659. using (SqlDataAdapter da = new SqlDataAdapter(cmd))
  660. {
  661. DataSet ds = new DataSet();
  662. try
  663. {
  664. da.Fill(ds,PageIndex, PageSize, "ds");
  665. cmd.Parameters.Clear();
  666. }
  667. catch (System.Data.SqlClient.SqlException ex)
  668. {
  669. throw new Exception(ex.Message);
  670. }
  671. return ds;
  672. }
  673. }
  674. }
  675. private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
  676. {
  677. if (conn.State != ConnectionState.Open)
  678. conn.Open();
  679. cmd.Connection = conn;
  680. cmd.CommandText = cmdText;
  681. if (trans != null)
  682. cmd.Transaction = trans;
  683. cmd.CommandType = CommandType.Text;//cmdType;
  684. if (cmdParms != null)
  685. {
  686. foreach (SqlParameter parameter in cmdParms)
  687. {
  688. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
  689. (parameter.Value == null))
  690. {
  691. parameter.Value = DBNull.Value;
  692. }
  693. cmd.Parameters.Add(parameter);
  694. }
  695. }
  696. }
  697. #endregion
  698.  
  699. #region 存储过程操作
  700.  
  701. /// <summary>
  702. /// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  703. /// </summary>
  704. /// <param name="storedProcName">存储过程名</param>
  705. /// <param name="parameters">存储过程参数</param>
  706. /// <returns>SqlDataReader</returns>
  707. public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
  708. {
  709. SqlConnection connection = new SqlConnection(connectionString);
  710. SqlDataReader returnReader;
  711. connection.Open();
  712. SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
  713. command.CommandType = CommandType.StoredProcedure;
  714. returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
  715. return returnReader;
  716. }
  717. /// <summary>
  718. /// 执行存储过程
  719. /// </summary>
  720. /// <param name="storedProcName">存储过程名</param>
  721. /// <param name="parameters">存储过程参数</param>
  722. /// <param name="tableName">DataSet结果中的表名</param>
  723. /// <returns>DataSet</returns>
  724. public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
  725. {
  726. using (SqlConnection connection = new SqlConnection(connectionString))
  727. {
  728. DataSet dataSet = new DataSet();
  729. connection.Open();
  730. SqlDataAdapter sqlDA = new SqlDataAdapter();
  731. sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
  732. sqlDA.Fill(dataSet, tableName);
  733. connection.Close();
  734. return dataSet;
  735. }
  736. }
  737. public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName, int Times)
  738. {
  739. using (SqlConnection connection = new SqlConnection(connectionString))
  740. {
  741. DataSet dataSet = new DataSet();
  742. connection.Open();
  743. SqlDataAdapter sqlDA = new SqlDataAdapter();
  744. sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
  745. sqlDA.SelectCommand.CommandTimeout = Times;
  746. sqlDA.Fill(dataSet, tableName);
  747. connection.Close();
  748. return dataSet;
  749. }
  750. }
  751. /// <summary>
  752. /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
  753. /// </summary>
  754. /// <param name="connection">数据库连接</param>
  755. /// <param name="storedProcName">存储过程名</param>
  756. /// <param name="parameters">存储过程参数</param>
  757. /// <returns>SqlCommand</returns>
  758. private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
  759. {
  760. SqlCommand command = new SqlCommand(storedProcName, connection);
  761. command.CommandType = CommandType.StoredProcedure;
  762. foreach (SqlParameter parameter in parameters)
  763. {
  764. if (parameter != null)
  765. {
  766. // 检查未分配值的输出参数,将其分配以DBNull.Value.
  767. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
  768. (parameter.Value == null))
  769. {
  770. parameter.Value = DBNull.Value;
  771. }
  772. command.Parameters.Add(parameter);
  773. }
  774. }
  775. return command;
  776. }
  777. /// <summary>
  778. /// 执行存储过程,返回影响的行数
  779. /// </summary>
  780. /// <param name="storedProcName">存储过程名</param>
  781. /// <param name="parameters">存储过程参数</param>
  782. /// <param name="rowsAffected">影响的行数</param>
  783. /// <returns></returns>
  784. public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
  785. {
  786. using (SqlConnection connection = new SqlConnection(connectionString))
  787. {
  788. int result;
  789. connection.Open();
  790. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  791. rowsAffected = command.ExecuteNonQuery();
  792. result = (int)command.Parameters["ReturnValue"].Value;
  793. //Connection.Close();
  794. return result;
  795. }
  796. }
  797. /// <summary>
  798. /// 创建 SqlCommand 对象实例(用来返回一个整数值)
  799. /// </summary>
  800. /// <param name="storedProcName">存储过程名</param>
  801. /// <param name="parameters">存储过程参数</param>
  802. /// <returns>SqlCommand 对象实例</returns>
  803. private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
  804. {
  805. SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
  806. command.Parameters.Add(new SqlParameter("ReturnValue",
  807. SqlDbType.Int, 4, ParameterDirection.ReturnValue,
  808. false, 0, 0, string.Empty, DataRowVersion.Default, null));
  809. return command;
  810. }
  811. #endregion
  812. }
  813. }

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号