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

  

配置:

以上代码是删除一些无用的动软代码的一个精简类。

或者使用直接使用动软代码生成器,新建项目,把所有的代码类全部生成出来。

备注一下,久了不用就容易忘了。

动软DbHelperSQL的更多相关文章

  1. 手把手教你用动软.NET代码生成器实例教程

    动软实战攻略 手把手教你用动软 文档编号:20110421 版权所有 © 2004-2011 动软 在线帮助:http://help.maticsoft.com 目录   一.        产品介绍 ...

  2. 动软代码生成器三层用于winform

    DBUtility项目中的DbHelperSQL.cs (找自己对应的数据库类型) 修改前20行中的数据库连接字符串获取方式为: //数据库连接字符串(web.config来配置),多数据库可使用Db ...

  3. 解决“动软代码生成器在SqlServer中会将唯一索引识别为主键"的Bug

    动软代码生成器在SqlServer中,生成的代码会将唯一索引错误地识别为主键, 反编译源代码后,发现其中的SQL条件有误,现修复此Bug. 修复方法:将附件中的”Maticsoft.DbObjects ...

  4. 澳洲最大的华资快递公司ACE 签约动软微信商城系统!

    ACE-平安立达快递是澳洲最大的华资快递公司ACE平安立达,总部设在Boxhill,同时在中国成立了进口食品专营连锁加盟店“澳莱优品”,目前已经有近20家加盟店,14年底国内计划开到60家店. 201 ...

  5. 动软商城系统可免费下载了,专业批发分销商城系统,ASP.NET商城系统

    动软商城系统是一套集CMS资讯+品牌Shop商城+WAP商城+APP手机客户端+SNS用户互动社区于一体的全新电商营销解决方案.主要为企业树立企业品牌形象,实现独立网络推广,充分集成网站SEO.企业微 ...

  6. 动软Model 模板 生成可空类型字段

    动软代码 生成可空类型 <#@ template language="c#" HostSpecific="True" #> <#@ outpu ...

  7. 动软代码生成器 可用于生成Entity层,可更改模板 /codesmith 也可以

    动软代码生成器官方下载地址:http://www.maticsoft.com/download.aspx 教程:http://jingyan.baidu.com/article/219f4bf7dfd ...

  8. 动软代码生成V2.74模版简介

    最近发现很多人用动软代码生成,确实方便,有些经验记录下,以后查看回顾. ..\Maticsoft\Codematic2\Template\TemplateFile 为模板文件夹,直接在目录下新建文件夹 ...

  9. 动软模板系列二(Model层模板)

    动软模板其实和CodeSmith的模板差不多 实现的原理是一样的,但是CodeSmith貌似只支持表生成,而且不够“国人化”,所以打算研究下动软的模板,如果熟练掌握后想必以后开发项目效率可以提高很多了 ...

随机推荐

  1. 互联网公司java面试题(一)

    1.JDK和JRE区别? JDK是整个JAVA的核心,包括了Java运行环境JRE,一堆Java工具和Java基础的类库.通过JDK开发人员将源码文件(java文件)编译成字节码文件(class文 件 ...

  2. jeecg下实现自动默认模糊查询

    也许jeecg的作者深受SAP毒害吧,没考虑到广大使用JEECG的人群为SAP用户,及所开发的项目均为中小项目,无惧大数据模糊查询带来的功能影响. 经网友“&&康&&& ...

  3. topjui.common.js

    function getTabWindow() { var curTabWin = null; if (topJUI.config.aloneUse) { curTabWin = window; } ...

  4. IK 用java 代码实现分词

    需要导入IK 对应的jar 包 IKAnalyzer2012.jar lucene-core-4.10.jar public static void main(String[] args) throw ...

  5. parallels desktop虚拟机与Mac共享网络设置方法

    查看vnic0的ip centos7设置ip parallels desktop偏好设置 最后可以互ping 也可以ping外网

  6. 2.2_springboot2.x消息RabbitMQ整合&amqpAdmin管理组件的使用

    5.1.1.基本测试 1.引 spring-boot-starter-amqp** <dependencies> <dependency> <groupId>org ...

  7. mysql 09章_存储过程和函数

    一. 函数和存储过程的相同点: 函数和存储过程都是事先预编译并保存在数据库中的特殊的数据库对象, 需要执行相应功能时就可以直接通过“函数名”.“存储过程”调用其中的代码,以提高执行效率和代码的复用性. ...

  8. JedisCluster获取key所在的节点

    JedisCluster获取key所在的节点 2019年11月9日17:34:55 准备 引入jedis的jar包,这个jar包里面包含了JedisCluster,可以用它来操作集群. <dep ...

  9. marktext常用快捷键使用说明

     快捷键使用 功能 快捷键 备注 X级标题 ctrl+X X∈[1~6] 加粗 Ctrl+B 标题默认加粗 倾斜 Ctrl+I 插入表格 Ctrl+T 侧边文件信息显示 Ctrl+J 删除线 Ctrl ...

  10. cookie与token对比(转)

    1.cookie(储存在用户本地终端上的数据( 为了辨别用户身份.进行 session 跟踪)) HTTP协议本身是无状态的,所以需要一个标志来对用户身份进行验证 用户登录成功后,会在服务器存一个se ...