DB_Helper.cs 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Configuration;
  5. using System.Data;
  6. using System.Data.SqlClient;
  7. using System.Linq;
  8. using System.Web;
  9. namespace CY_dingDing.Controller.Sql_controller
  10. {
  11. public class DB_Helper
  12. {
  13. //数据库连接字符串(web.config来配置),多数据库可使用DbHelperSQLP来实现.
  14. public static string constr = "Data Source=47.99.48.105;Initial Catalog=DingLog;User ID = sa; password = SAsa51021535";
  15. //public static string constr = "Data Source = 47.101.188.12; Initial Catalog = Intelligent_Personnel; User ID = sa; password = Yunpu@2020";
  16. private static string connectionString = constr; /*ConfigurationManager.ConnectionStrings["strCon"].ConnectionString;*/
  17. //private static string connectionString1 = ConfigurationManager.ConnectionStrings["strCon1"].ConnectionString;
  18. public DB_Helper()
  19. {
  20. connectionString = constr; //ConfigurationManager.ConnectionStrings["strCon1"].ConnectionString;
  21. //connectionString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
  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()); //也可能=0
  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. #region 执行简单SQL语句
  125. /// <summary>
  126. /// 执行SQL语句,返回影响的记录数
  127. /// </summary>
  128. /// <param name="SQLString">SQL语句</param>
  129. /// <returns>影响的记录数</returns>
  130. public static int ExecuteSql(string SQLString)
  131. {
  132. using (SqlConnection connection = new SqlConnection(connectionString))
  133. {
  134. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  135. {
  136. try
  137. {
  138. connection.Open();
  139. int rows = cmd.ExecuteNonQuery();
  140. return rows;
  141. }
  142. catch (System.Data.SqlClient.SqlException e)
  143. {
  144. connection.Close();
  145. throw e;
  146. }
  147. }
  148. }
  149. }
  150. public static int ExecuteSqlByTime(string SQLString, int Times)
  151. {
  152. using (SqlConnection connection = new SqlConnection(connectionString))
  153. {
  154. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  155. {
  156. try
  157. {
  158. connection.Open();
  159. cmd.CommandTimeout = Times;
  160. int rows = cmd.ExecuteNonQuery();
  161. return rows;
  162. }
  163. catch (System.Data.SqlClient.SqlException e)
  164. {
  165. connection.Close();
  166. throw e;
  167. }
  168. }
  169. }
  170. }
  171. /// <summary>
  172. /// 执行多条SQL语句,实现数据库事务。
  173. /// </summary>
  174. /// <param name="SQLStringList">多条SQL语句</param>
  175. public static int ExecuteSqlTran(List<String> SQLStringList)
  176. {
  177. using (SqlConnection conn = new SqlConnection(connectionString))
  178. {
  179. conn.Open();
  180. SqlCommand cmd = new SqlCommand();
  181. cmd.Connection = conn;
  182. SqlTransaction tx = conn.BeginTransaction();
  183. cmd.Transaction = tx;
  184. try
  185. {
  186. int count = 0;
  187. for (int n = 0; n < SQLStringList.Count; n++)
  188. {
  189. string strsql = SQLStringList[n];
  190. if (strsql.Trim().Length > 1)
  191. {
  192. cmd.CommandText = strsql;
  193. count += cmd.ExecuteNonQuery();
  194. }
  195. }
  196. tx.Commit();
  197. return count;
  198. }
  199. catch
  200. {
  201. tx.Rollback();
  202. return 0;
  203. }
  204. }
  205. }
  206. /// <summary>
  207. /// 执行带一个存储过程参数的的SQL语句。
  208. /// </summary>
  209. /// <param name="SQLString">SQL语句</param>
  210. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  211. /// <returns>影响的记录数</returns>
  212. public static int ExecuteSql(string SQLString, string content)
  213. {
  214. using (SqlConnection connection = new SqlConnection(connectionString))
  215. {
  216. SqlCommand cmd = new SqlCommand(SQLString, connection);
  217. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
  218. myParameter.Value = content;
  219. cmd.Parameters.Add(myParameter);
  220. try
  221. {
  222. connection.Open();
  223. int rows = cmd.ExecuteNonQuery();
  224. return rows;
  225. }
  226. catch (System.Data.SqlClient.SqlException e)
  227. {
  228. throw e;
  229. }
  230. finally
  231. {
  232. cmd.Dispose();
  233. connection.Close();
  234. }
  235. }
  236. }
  237. /// <summary>
  238. /// 执行带一个存储过程参数的的SQL语句。
  239. /// </summary>
  240. /// <param name="SQLString">SQL语句</param>
  241. /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
  242. /// <returns>影响的记录数</returns>
  243. public static object ExecuteSqlGet(string SQLString, string content)
  244. {
  245. using (SqlConnection connection = new SqlConnection(connectionString))
  246. {
  247. SqlCommand cmd = new SqlCommand(SQLString, connection);
  248. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
  249. myParameter.Value = content;
  250. cmd.Parameters.Add(myParameter);
  251. try
  252. {
  253. connection.Open();
  254. object obj = cmd.ExecuteScalar();
  255. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  256. {
  257. return null;
  258. }
  259. else
  260. {
  261. return obj;
  262. }
  263. }
  264. catch (System.Data.SqlClient.SqlException e)
  265. {
  266. throw e;
  267. }
  268. finally
  269. {
  270. cmd.Dispose();
  271. connection.Close();
  272. }
  273. }
  274. }
  275. /// <summary>
  276. /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
  277. /// </summary>
  278. /// <param name="strSQL">SQL语句</param>
  279. /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
  280. /// <returns>影响的记录数</returns>
  281. public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
  282. {
  283. using (SqlConnection connection = new SqlConnection(connectionString))
  284. {
  285. SqlCommand cmd = new SqlCommand(strSQL, connection);
  286. System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
  287. myParameter.Value = fs;
  288. cmd.Parameters.Add(myParameter);
  289. try
  290. {
  291. connection.Open();
  292. int rows = cmd.ExecuteNonQuery();
  293. return rows;
  294. }
  295. catch (System.Data.SqlClient.SqlException e)
  296. {
  297. throw e;
  298. }
  299. finally
  300. {
  301. cmd.Dispose();
  302. connection.Close();
  303. }
  304. }
  305. }
  306. /// <summary>
  307. /// 执行一条计算查询结果语句,返回查询结果(object)。
  308. /// </summary>
  309. /// <param name="SQLString">计算查询结果语句</param>
  310. /// <returns>查询结果(object)</returns>
  311. public static object GetSingle(string SQLString)
  312. {
  313. using (SqlConnection connection = new SqlConnection(connectionString))
  314. {
  315. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  316. {
  317. try
  318. {
  319. connection.Open();
  320. object obj = cmd.ExecuteScalar();
  321. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  322. {
  323. return null;
  324. }
  325. else
  326. {
  327. return obj;
  328. }
  329. }
  330. catch (System.Data.SqlClient.SqlException e)
  331. {
  332. connection.Close();
  333. throw e;
  334. }
  335. }
  336. }
  337. }
  338. public static object GetSingle(string SQLString, int Times)
  339. {
  340. using (SqlConnection connection = new SqlConnection(connectionString))
  341. {
  342. using (SqlCommand cmd = new SqlCommand(SQLString, connection))
  343. {
  344. try
  345. {
  346. connection.Open();
  347. cmd.CommandTimeout = Times;
  348. object obj = cmd.ExecuteScalar();
  349. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  350. {
  351. return null;
  352. }
  353. else
  354. {
  355. return obj;
  356. }
  357. }
  358. catch (System.Data.SqlClient.SqlException e)
  359. {
  360. connection.Close();
  361. throw e;
  362. }
  363. }
  364. }
  365. }
  366. /// <summary>
  367. /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  368. /// </summary>
  369. /// <param name="strSQL">查询语句</param>
  370. /// <returns>SqlDataReader</returns>
  371. public static SqlDataReader ExecuteReader(string strSQL)
  372. {
  373. SqlConnection connection = new SqlConnection(connectionString);
  374. SqlCommand cmd = new SqlCommand(strSQL, connection);
  375. try
  376. {
  377. connection.Open();
  378. SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  379. return myReader;
  380. }
  381. catch (System.Data.SqlClient.SqlException e)
  382. {
  383. throw e;
  384. }
  385. }
  386. /// <summary>
  387. /// 执行查询语句,返回DataSet
  388. /// </summary>
  389. /// <param name="SQLString">查询语句</param>
  390. /// <returns>DataSet</returns>
  391. public static DataSet Query(string SQLString)
  392. {
  393. using (SqlConnection connection = new SqlConnection(connectionString))
  394. {
  395. DataSet ds = new DataSet();
  396. try
  397. {
  398. connection.Open();
  399. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  400. command.Fill(ds, "ds");
  401. }
  402. catch (System.Data.SqlClient.SqlException ex)
  403. {
  404. throw new Exception(ex.Message);
  405. }
  406. return ds;
  407. }
  408. }
  409. public static DataSet Query(string SQLString, int Times)
  410. {
  411. using (SqlConnection connection = new SqlConnection(connectionString))
  412. {
  413. DataSet ds = new DataSet();
  414. try
  415. {
  416. connection.Open();
  417. SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
  418. command.SelectCommand.CommandTimeout = Times;
  419. command.Fill(ds, "ds");
  420. }
  421. catch (System.Data.SqlClient.SqlException ex)
  422. {
  423. throw new Exception(ex.Message);
  424. }
  425. return ds;
  426. }
  427. }
  428. #endregion
  429. #region 执行带参数的SQL语句
  430. /// <summary>
  431. /// 执行SQL语句,返回影响的记录数
  432. /// </summary>
  433. /// <param name="SQLString">SQL语句</param>
  434. /// <returns>影响的记录数</returns>
  435. public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
  436. {
  437. using (SqlConnection connection = new SqlConnection(connectionString))
  438. {
  439. using (SqlCommand cmd = new SqlCommand())
  440. {
  441. try
  442. {
  443. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  444. int rows = cmd.ExecuteNonQuery();
  445. cmd.Parameters.Clear();
  446. return rows;
  447. }
  448. catch (System.Data.SqlClient.SqlException e)
  449. {
  450. throw e;
  451. }
  452. }
  453. }
  454. }
  455. /// <summary>
  456. /// 执行多条SQL语句,实现数据库事务。
  457. /// </summary>
  458. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  459. public static void ExecuteSqlTran(Hashtable SQLStringList)
  460. {
  461. using (SqlConnection conn = new SqlConnection(connectionString))
  462. {
  463. conn.Open();
  464. using (SqlTransaction trans = conn.BeginTransaction())
  465. {
  466. SqlCommand cmd = new SqlCommand();
  467. try
  468. {
  469. //循环
  470. foreach (DictionaryEntry myDE in SQLStringList)
  471. {
  472. string cmdText = myDE.Key.ToString();
  473. SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
  474. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  475. int val = cmd.ExecuteNonQuery();
  476. cmd.Parameters.Clear();
  477. }
  478. trans.Commit();
  479. }
  480. catch
  481. {
  482. trans.Rollback();
  483. throw;
  484. }
  485. }
  486. }
  487. }
  488. /// <summary>
  489. /// 执行多条SQL语句,实现数据库事务。
  490. /// </summary>
  491. /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
  492. public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)
  493. {
  494. using (SqlConnection conn = new SqlConnection(connectionString))
  495. {
  496. conn.Open();
  497. using (SqlTransaction trans = conn.BeginTransaction())
  498. {
  499. SqlCommand cmd = new SqlCommand();
  500. try
  501. {
  502. int indentity = 0;
  503. //循环
  504. foreach (DictionaryEntry myDE in SQLStringList)
  505. {
  506. string cmdText = myDE.Key.ToString();
  507. SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
  508. foreach (SqlParameter q in cmdParms)
  509. {
  510. if (q.Direction == ParameterDirection.InputOutput)
  511. {
  512. q.Value = indentity;
  513. }
  514. }
  515. PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
  516. int val = cmd.ExecuteNonQuery();
  517. foreach (SqlParameter q in cmdParms)
  518. {
  519. if (q.Direction == ParameterDirection.Output)
  520. {
  521. indentity = Convert.ToInt32(q.Value);
  522. }
  523. }
  524. cmd.Parameters.Clear();
  525. }
  526. trans.Commit();
  527. }
  528. catch
  529. {
  530. trans.Rollback();
  531. throw;
  532. }
  533. }
  534. }
  535. }
  536. /// <summary>
  537. /// 执行一条计算查询结果语句,返回查询结果(object)。
  538. /// </summary>
  539. /// <param name="SQLString">计算查询结果语句</param>
  540. /// <returns>查询结果(object)</returns>
  541. public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
  542. {
  543. using (SqlConnection connection = new SqlConnection(connectionString))
  544. {
  545. using (SqlCommand cmd = new SqlCommand())
  546. {
  547. try
  548. {
  549. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  550. object obj = cmd.ExecuteScalar();
  551. cmd.Parameters.Clear();
  552. if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
  553. {
  554. return null;
  555. }
  556. else
  557. {
  558. return obj;
  559. }
  560. }
  561. catch (System.Data.SqlClient.SqlException e)
  562. {
  563. throw e;
  564. }
  565. }
  566. }
  567. }
  568. /// <summary>
  569. /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  570. /// </summary>
  571. /// <param name="strSQL">查询语句</param>
  572. /// <returns>SqlDataReader</returns>
  573. ///
  574. public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
  575. {
  576. SqlConnection connection = new SqlConnection(connectionString);
  577. SqlCommand cmd = new SqlCommand();
  578. try
  579. {
  580. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  581. SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  582. cmd.Parameters.Clear();
  583. return myReader;
  584. }
  585. catch (System.Data.SqlClient.SqlException e)
  586. {
  587. throw e;
  588. }
  589. // finally
  590. // {
  591. // cmd.Dispose();
  592. // connection.Close();
  593. // }
  594. }
  595. /// <summary>
  596. /// 执行查询语句,返回DataSet
  597. /// </summary>
  598. /// <param name="SQLString">查询语句</param>
  599. /// <returns>DataSet</returns>
  600. ///
  601. public static DataSet Query(string SQLString, params SqlParameter[] cmdParms)
  602. {
  603. using (SqlConnection connection = new SqlConnection(connectionString))
  604. {
  605. SqlCommand cmd = new SqlCommand();
  606. PrepareCommand(cmd, connection, null, SQLString, cmdParms);
  607. using (SqlDataAdapter da = new SqlDataAdapter(cmd))
  608. {
  609. DataSet ds = new DataSet();
  610. try
  611. {
  612. da.Fill(ds, "ds");
  613. cmd.Parameters.Clear();
  614. }
  615. catch (System.Data.SqlClient.SqlException ex)
  616. {
  617. throw new Exception(ex.Message);
  618. }
  619. return ds;
  620. }
  621. }
  622. }
  623. private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
  624. {
  625. if (conn.State != ConnectionState.Open)
  626. conn.Open();
  627. cmd.Connection = conn;
  628. cmd.CommandText = cmdText;
  629. if (trans != null)
  630. cmd.Transaction = trans;
  631. cmd.CommandType = CommandType.Text;//cmdType;
  632. if (cmdParms != null)
  633. {
  634. foreach (SqlParameter parameter in cmdParms)
  635. {
  636. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
  637. (parameter.Value == null))
  638. {
  639. parameter.Value = DBNull.Value;
  640. }
  641. cmd.Parameters.Add(parameter);
  642. }
  643. }
  644. }
  645. #endregion
  646. #region 存储过程操作
  647. /// <summary>
  648. /// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
  649. /// </summary>
  650. /// <param name="storedProcName">存储过程名</param>
  651. /// <param name="parameters">存储过程参数</param>
  652. /// <returns>SqlDataReader</returns>
  653. public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
  654. {
  655. SqlConnection connection = new SqlConnection(connectionString);
  656. SqlDataReader returnReader;
  657. connection.Open();
  658. SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
  659. command.CommandType = CommandType.StoredProcedure;
  660. returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
  661. return returnReader;
  662. }
  663. /// <summary>
  664. /// 执行存储过程
  665. /// </summary>
  666. /// <param name="storedProcName">存储过程名</param>
  667. /// <param name="parameters">存储过程参数</param>
  668. /// <param name="tableName">DataSet结果中的表名</param>
  669. /// <returns>DataSet</returns>
  670. public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
  671. {
  672. using (SqlConnection connection = new SqlConnection(connectionString))
  673. {
  674. DataSet dataSet = new DataSet();
  675. connection.Open();
  676. SqlDataAdapter sqlDA = new SqlDataAdapter();
  677. sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
  678. sqlDA.Fill(dataSet, tableName);
  679. connection.Close();
  680. return dataSet;
  681. }
  682. }
  683. public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName, int Times)
  684. {
  685. using (SqlConnection connection = new SqlConnection(connectionString))
  686. {
  687. DataSet dataSet = new DataSet();
  688. connection.Open();
  689. SqlDataAdapter sqlDA = new SqlDataAdapter();
  690. sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
  691. sqlDA.SelectCommand.CommandTimeout = Times;
  692. sqlDA.Fill(dataSet, tableName);
  693. connection.Close();
  694. return dataSet;
  695. }
  696. }
  697. /// <summary>
  698. /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
  699. /// </summary>
  700. /// <param name="connection">数据库连接</param>
  701. /// <param name="storedProcName">存储过程名</param>
  702. /// <param name="parameters">存储过程参数</param>
  703. /// <returns>SqlCommand</returns>
  704. private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
  705. {
  706. SqlCommand command = new SqlCommand(storedProcName, connection);
  707. command.CommandType = CommandType.StoredProcedure;
  708. foreach (SqlParameter parameter in parameters)
  709. {
  710. if (parameter != null)
  711. {
  712. // 检查未分配值的输出参数,将其分配以DBNull.Value.
  713. if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
  714. (parameter.Value == null))
  715. {
  716. parameter.Value = DBNull.Value;
  717. }
  718. command.Parameters.Add(parameter);
  719. }
  720. }
  721. return command;
  722. }
  723. /// <summary>
  724. /// 执行存储过程,返回影响的行数
  725. /// </summary>
  726. /// <param name="storedProcName">存储过程名</param>
  727. /// <param name="parameters">存储过程参数</param>
  728. /// <param name="rowsAffected">影响的行数</param>
  729. /// <returns></returns>
  730. public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
  731. {
  732. using (SqlConnection connection = new SqlConnection(connectionString))
  733. {
  734. int result;
  735. connection.Open();
  736. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  737. rowsAffected = command.ExecuteNonQuery();
  738. result = (int)command.Parameters["ReturnValue"].Value;
  739. //Connection.Close();
  740. return result;
  741. }
  742. }
  743. public static int RunProcedureXima_Gp_InsertK(string storedProcName, IDataParameter[] parameters)
  744. {
  745. using (SqlConnection connection = new SqlConnection(connectionString))
  746. {
  747. int kid;
  748. connection.Open();
  749. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  750. command.ExecuteNonQuery();
  751. kid = (int)command.Parameters["ReturnValue"].Value;
  752. //Connection.Close();
  753. return kid;
  754. }
  755. }
  756. public static string RunProcedure_CreatePtype(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
  757. {
  758. using (SqlConnection connection = new SqlConnection(connectionString))
  759. {
  760. string result;
  761. connection.Open();
  762. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  763. // command.Parameters["ReturnValue"].SqlDbType = SqlDbType.VarChar;
  764. command.Parameters["ReturnValue"].DbType = DbType.String;
  765. rowsAffected = command.ExecuteNonQuery();
  766. result = command.Parameters["ReturnValue"].Value.ToString();
  767. //Connection.Close();
  768. return result;
  769. }
  770. }
  771. public static string RunProcedure_UpdatePtype(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
  772. {
  773. using (SqlConnection connection = new SqlConnection(connectionString))
  774. {
  775. string result;
  776. connection.Open();
  777. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  778. // command.Parameters["ReturnValue"].SqlDbType = SqlDbType.VarChar;
  779. command.Parameters["ReturnValue"].DbType = DbType.String;
  780. rowsAffected = command.ExecuteNonQuery();
  781. result = command.Parameters["ReturnValue"].Value.ToString();
  782. //Connection.Close();
  783. return result;
  784. }
  785. }
  786. public static int RunProcedureintReturn(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
  787. {
  788. using (SqlConnection connection = new SqlConnection(connectionString))
  789. {
  790. int result;
  791. connection.Open();
  792. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  793. rowsAffected = command.ExecuteNonQuery();
  794. result = (int)command.Parameters["ReturnValue"].Value;
  795. //Connection.Close();
  796. return result;
  797. }
  798. }
  799. /// <summary>
  800. /// 创建 SqlCommand 对象实例(用来返回一个整数值)
  801. /// </summary>
  802. /// <param name="storedProcName">存储过程名</param>
  803. /// <param name="parameters">存储过程参数</param>
  804. /// <returns>SqlCommand 对象实例</returns>
  805. private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
  806. {
  807. SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
  808. command.Parameters.Add(new SqlParameter("ReturnValue",
  809. SqlDbType.Int, 4, ParameterDirection.ReturnValue,
  810. false, 0, 0, string.Empty, DataRowVersion.Default, null));
  811. return command;
  812. }
  813. #endregion
  814. public static string RunProcedureXima_Gp_InsertS(string storedProcName, SqlParameter[] parameters, out int rowsAffected)
  815. {
  816. using (SqlConnection connection = new SqlConnection(connectionString))
  817. {
  818. int result;
  819. connection.Open();
  820. SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
  821. rowsAffected = command.ExecuteNonQuery();
  822. string stypeid = command.Parameters["ReturnValue"].Value.ToString();
  823. //Connection.Close();
  824. return stypeid;
  825. }
  826. }
  827. public static DataTable SelectTable(String sql, CommandType cmdType, params SqlParameter[] sp)
  828. {
  829. using (SqlConnection conn = new SqlConnection(constr))
  830. {
  831. conn.Open();
  832. SqlCommand cmd = conn.CreateCommand();
  833. foreach (SqlParameter item in sp)
  834. {
  835. cmd.Parameters.Add(item);
  836. }
  837. cmd.CommandType = cmdType;
  838. cmd.CommandText = sql;
  839. using (SqlDataAdapter da = new SqlDataAdapter(cmd))
  840. {
  841. DataSet ds = new DataSet();
  842. da.Fill(ds);
  843. return ds.Tables[0];
  844. }
  845. }
  846. }
  847. /// <summary>
  848. /// 执行SQL查询语句
  849. /// </summary>
  850. /// <param name="cmdstr">查询语句</param>
  851. /// <returns>返回DataTable数据表</returns>
  852. public static DataTable reDts(string cmdstr)
  853. {
  854. using (SqlConnection connection = new SqlConnection(connectionString))
  855. {
  856. connection.Open();
  857. SqlDataAdapter da = new SqlDataAdapter(cmdstr, connection);
  858. DataSet ds = new DataSet();
  859. da.Fill(ds);
  860. DataTable dt = ds.Tables[0];
  861. return (dt);
  862. }
  863. }
  864. //第二种dbhelper
  865. //创建连接字符串:通过“工具”---“连接到数据库”--“高级”
  866. //public static string constr = "Data Source=.;Initial Catalog=StudentDB;Integrated Security=True";
  867. /// <summary>
  868. /// 查询的方法
  869. /// </summary>
  870. /// <param name="sql">要执行的sql语句</param>
  871. /// <returns>结果集</returns>
  872. public static DataTable Select(string sql)
  873. {
  874. //创建连接对象
  875. SqlConnection conn = new SqlConnection(constr);
  876. //创建适配器对象
  877. SqlDataAdapter dap = new SqlDataAdapter(sql, conn);
  878. //创建DataTable对象
  879. DataTable dt = new DataTable();
  880. //使用适配器对象填充dt
  881. dap.Fill(dt);
  882. //返回dt
  883. return dt;
  884. }
  885. /// <summary>
  886. /// 增删改的方法
  887. /// </summary>
  888. /// <param name="sql">要执行的sql语句</param>
  889. /// <returns>受影响的行数是否>0</returns>
  890. public static bool Excute(string sql)
  891. {
  892. //创建连接对象
  893. SqlConnection conn = new SqlConnection(constr);
  894. //打开连接对象
  895. conn.Open();
  896. //创建命令对象
  897. SqlCommand cmd = new SqlCommand(sql, conn);
  898. //调用cmd的增删改方法
  899. int count = cmd.ExecuteNonQuery();
  900. //关闭连接对象
  901. conn.Close();
  902. //返回
  903. return count > 0;
  904. }
  905. /// <summary>
  906. /// 重写以上方法
  907. /// </summary>
  908. /// <param name="sql"></param>
  909. /// <returns></returns>
  910. public static bool Excute1(string sql)
  911. {
  912. //创建连接对象
  913. SqlConnection conn = new SqlConnection(connectionString);
  914. //打开连接对象
  915. conn.Open();
  916. //创建命令对象
  917. SqlCommand cmd = new SqlCommand(sql, conn);
  918. //调用cmd的增删改方法
  919. int count = cmd.ExecuteNonQuery();
  920. //关闭连接对象
  921. conn.Close();
  922. //返回
  923. return count > 0;
  924. }
  925. public static DataTable Select1(string sql)
  926. {
  927. //创建连接对象
  928. SqlConnection conn = new SqlConnection(connectionString);
  929. //创建适配器对象
  930. SqlDataAdapter dap = new SqlDataAdapter(sql, conn);
  931. //创建DataTable对象
  932. DataTable dt = new DataTable();
  933. //使用适配器对象填充dt
  934. dap.Fill(dt);
  935. //返回dt
  936. return dt;
  937. }
  938. }
  939. }