SqlHelper.cs.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. namespace Common
  5. {
  6. public class SqlHelper
  7. {
  8. //连接字符串
  9. public static readonly string ConStr = XMLhelper.GetNode("ConnectStr");
  10. /// <summary>
  11. /// 执行sql,返回DataSet
  12. /// </summary>
  13. /// <param name="sql">sql语句</param>
  14. /// <returns></returns>
  15. public static DataSet ExecSqlDs(string sql)
  16. {
  17. var con = new SqlConnection(ConStr);
  18. var adp = new SqlDataAdapter(sql, con);
  19. var ds = new DataSet();
  20. adp.Fill(ds, "sql");
  21. return ds;
  22. }
  23. /// <summary>
  24. /// 执行SQL
  25. /// </summary>
  26. /// <param name="sql">sql语句</param>
  27. /// <param name="sqlParameters">参数</param>
  28. /// <returns>成功返回空字符串,失败返回错误信息</returns>
  29. public static string ExecSql(string sql, params SqlParameter[] sqlParameters)
  30. {
  31. string result = string.Empty;
  32. var con = new SqlConnection(ConStr);
  33. var command = new SqlCommand(sql, con) { CommandType = CommandType.Text };
  34. if (sqlParameters.Length > 0)
  35. {
  36. CmdGetParam(command, sqlParameters);
  37. }
  38. try
  39. {
  40. con.Open();
  41. command.ExecuteNonQuery();
  42. }
  43. catch (Exception ex)
  44. {
  45. result = ex.Message;
  46. }
  47. finally
  48. {
  49. con.Close();
  50. }
  51. return result;
  52. }
  53. /// <summary>
  54. /// 执行SQL
  55. /// </summary>
  56. /// <param name="sql">sql语句</param>
  57. /// <param name="sqlParameters">参数</param>
  58. /// <returns>成功返回空字符串,失败返回错误信息</returns>
  59. public static DataTable ExecSqlDateTable(string sql, params SqlParameter[] sqlParameters)
  60. {
  61. var con = new SqlConnection(ConStr);
  62. var command = new SqlCommand(sql, con) { CommandType = CommandType.Text };
  63. var dataSet = new DataSet();
  64. if (sqlParameters.Length > 0)
  65. {
  66. CmdGetParam(command, sqlParameters);
  67. }
  68. try
  69. {
  70. var adapter = new SqlDataAdapter(command);
  71. adapter.Fill(dataSet);
  72. }
  73. catch (Exception)
  74. {
  75. return new DataTable();
  76. }
  77. return dataSet.Tables.Count > 0 ? dataSet.Tables[0] : new DataTable();
  78. }
  79. /// <summary>
  80. /// 执行SQL 返回第一格的值
  81. /// </summary>
  82. /// <param name="sql">sql语句</param>
  83. /// <param name="sqlParameters">参数</param>
  84. /// <returns>成功返回空字符串,失败返回错误信息</returns>
  85. public static string ExecSqlSc(string sql, params SqlParameter[] sqlParameters)
  86. {
  87. var con = new SqlConnection(ConStr);
  88. var command = new SqlCommand(sql, con) { CommandType = CommandType.Text };
  89. string result = string.Empty;
  90. if (sqlParameters.Length > 0)
  91. {
  92. CmdGetParam(command, sqlParameters);
  93. }
  94. try
  95. {
  96. con.Open();
  97. var ex = command.ExecuteScalar();
  98. if (ex != null && ex != DBNull.Value)
  99. {
  100. result = ex.ToString();
  101. }
  102. }
  103. catch (Exception ex)
  104. {
  105. result = "*报错False*:" + ex.Message;
  106. }
  107. finally
  108. {
  109. con.Close();
  110. }
  111. return result;
  112. }
  113. //检查执行ExecSqlSc是否报错
  114. public static bool CheckSc(string result)
  115. {
  116. return !result.Contains("*报错False*:");
  117. }
  118. /// <summary>
  119. /// sql命令传入参数
  120. /// </summary>
  121. /// <param name="cmd">sql命令</param>
  122. /// <param name="sqlParameters">参数数组</param>
  123. public static void CmdGetParam(SqlCommand cmd, SqlParameter[] sqlParameters)
  124. {
  125. if (sqlParameters.Length <= 0) return;
  126. cmd.Parameters.Clear();
  127. foreach (var sqlParameter in sqlParameters)
  128. {
  129. cmd.Parameters.Add(sqlParameter);
  130. }
  131. }
  132. /// <summary>
  133. /// 执行SQL事务
  134. /// </summary>
  135. /// <param name="sqls">对象二维数组, [,0]为sql语句,[,1]为sql参数数组</param>
  136. /// <returns>成功返回空字符串,失败返回错误信息</returns>
  137. public static string ExecSqlT(object[,] sqls)
  138. {
  139. string result = string.Empty;
  140. var con = new SqlConnection(ConStr);
  141. con.Open();
  142. SqlTransaction tan = con.BeginTransaction(); //建立事务
  143. try
  144. {
  145. var command = new SqlCommand { Connection = con, CommandType = CommandType.Text, Transaction = tan };
  146. //计算有多少组语句需要执行
  147. for (int i = 0; i < sqls.GetLength(0); i++)
  148. {
  149. command.CommandText = sqls[i, 0].ToString(); //取出语句
  150. var sqlParameters = (SqlParameter[])sqls[i, 1]; //取出参数
  151. if (sqlParameters.Length > 0)
  152. {
  153. CmdGetParam(command, sqlParameters); //参数赋值
  154. }
  155. command.ExecuteNonQuery(); //执行
  156. }
  157. tan.Commit(); //事务提交
  158. }
  159. catch (Exception ex)
  160. {
  161. tan.Rollback(); //事务回滚
  162. result = ex.Message;
  163. }
  164. finally
  165. {
  166. con.Close();
  167. }
  168. return result;
  169. }
  170. #region reader读取数据
  171. /// <summary>
  172. /// 从reader返回string
  173. /// </summary>
  174. /// <param name="columnName">查询的列名</param>
  175. /// <param name="reader"></param>
  176. /// <returns></returns>
  177. public static string ReaderString(string columnName, SqlDataReader reader)
  178. {
  179. return (string)reader[columnName];
  180. }
  181. /// <summary>
  182. /// 从reader返回int
  183. /// </summary>
  184. /// <param name="columnName">查询的列名</param>
  185. /// <param name="reader"></param>
  186. /// <returns></returns>
  187. public static int ReaderInt(string columnName, SqlDataReader reader)
  188. {
  189. return Convert.ToInt32(reader[columnName]);
  190. }
  191. /// <summary>
  192. /// 从reader返回DateTime
  193. /// </summary>
  194. /// <param name="columnName">查询的列名</param>
  195. /// <param name="reader"></param>
  196. /// <returns></returns>
  197. public static DateTime ReaderDateTime(string columnName, SqlDataReader reader)
  198. {
  199. return (DateTime)reader[columnName];
  200. }
  201. /// <summary>
  202. /// 从reader返回bool
  203. /// </summary>
  204. /// <param name="columnName">查询的列名</param>
  205. /// <param name="reader"></param>
  206. /// <returns></returns>
  207. public static bool ReaderBool(string columnName, SqlDataReader reader)
  208. {
  209. return (bool)reader[columnName];
  210. }
  211. #endregion
  212. }
  213. }