怎么说呢,作为程序员,我们明天都应该学习新的知识。

以前我在对数据库进行操作的时候都是在同一页面对数据库进行操作。这样的话,就是操作繁琐,而且需要重复的书写对数据库操作的代码,这样不仅浪费了很多的时间,而且也使得代码看起来非常的凌乱。至从接触到了三层架构的思想,明白了分层的好处,还有面向对象的好处。今天在看书的时候,看到周金桥老师的对数据库访问的通用类,就试着模仿的写了一个,代码清晰,而且很实用,包括了对数据库的所有的常用的操作。

  1. /// <summary>
  2. /// 数据库访问通用类
  3. /// </summary>
  4. public class SqlHelper
  5. {
  6. private string connectionString;
  7. /// <summary>
  8. /// 设定数据库访问字符串
  9. /// </summary>
  10. public string ConnectionString
  11. {
  12. set { connectionString = value; }
  13. }
  14. /// <summary>
  15. /// 构造函数
  16. /// </summary>
  17. /// <param name="connectionString">数据库访问字符串</param>
  18. public SqlHelper(string connectionString)
  19. {
  20. this.connectionString = connectionString;
  21. }
  22. /// <summary>
  23. /// 执行一个查询,并返回查询结果
  24. /// </summary>
  25. /// <param name="sql">要执行的sql语句</param>
  26. /// <param name="commandType">要执行的查询语句的类型,如存储过程或者sql文本命令</param>
  27. /// <returns>返回查询结果集</returns>
  28. public DataTable ExecuteDataTable(string sql,CommandType commandType)
  29. {
  30. return ExecuteDataTable(sql, commandType, null);
  31. }
  32. /// <summary>
  33. /// 执行一个查询,并返回结果集
  34. /// </summary>
  35. /// <param name="sql">要执行的sql文本命令</param>
  36. /// <returns>返回查询的结果集</returns>
  37. public DataTable ExecuteDataTable(string sql)
  38. {
  39. return ExecuteDataTable(sql, CommandType.Text, null);
  40. }
  41. /// <summary>
  42. /// 执行一个查询,并返回查询结果
  43. /// </summary>
  44. /// <param name="sql">要执行的sql语句</param>
  45. /// <param name="commandtype">要执行查询语句的类型,如存储过程或者sql文本命令</param>
  46. /// <param name="parameters">Transact-SQL语句或者存储过程参数数组</param>
  47. /// <returns></returns>
  48. public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)
  49. {
  50. DataTable data = new DataTable(); //实例化datatable,用于装载查询结果集
  51. using (SqlConnection con = new SqlConnection(connectionString))
  52. {
  53. using (SqlCommand cmd = new SqlCommand(sql, con))
  54. {
  55. cmd.CommandType = commandtype;//设置command的commandType为指定的Commandtype
  56. //如果同时传入了参数,则添加这些参数
  57. if (parameters != null)
  58. {
  59. foreach (SqlParameter parameter in parameters)
  60. {
  61. cmd.Parameters.Add(parameter);
  62. }
  63. }
  64. //通过包含查询sql的sqlcommand实例来实例化sqldataadapter
  65. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  66. adapter.Fill(data);//填充datatable
  67. }
  68. }
  69. return data;
  70. }
  71. /// <summary>
  72. /// 返回一个SqlDataReader对象的实例
  73. /// </summary>
  74. /// <param name="sql">要执行的SQl查询命令</param>
  75. /// <returns></returns>
  76. public SqlDataReader ExecuteReader(string sql)
  77. {
  78. return ExecuteReader(sql, CommandType.Text, null);
  79. }
  80. /// <summary>
  81. ///
  82. /// </summary>
  83. /// <param name="sql">要执行的sql语句</param>
  84. /// <param name="commandType">要执行查询语句的类型,如存储过程或者SQl文本命令</param>
  85. /// <returns></returns>
  86. public SqlDataReader ExecuteReader(string sql,CommandType commandType)
  87. {
  88. return ExecuteReader(sql, commandType, null);
  89. }
  90. /// <summary>
  91. /// 返回一个sqldatareader对象的实例
  92. /// </summary>
  93. /// <param name="sql"></param>
  94. /// <param name="commandType"></param>
  95. /// <param name="parameters"></param>
  96. /// <returns></returns>
  97. public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)
  98. {
  99. SqlConnection con = new SqlConnection(connectionString);
  100. SqlCommand cmd = new SqlCommand(sql, con);
  101. if (parameters != null)
  102. {
  103. foreach (SqlParameter parameter in parameters)
  104. {
  105. cmd.Parameters.Add(parameters);
  106. }
  107. }
  108. con.Open();
  109. //CommandBehavior.CloseConnection参数指示关闭reader对象时关闭与其关联的Connection对象
  110. return cmd.ExecuteReader(CommandBehavior.CloseConnection);
  111. }
  112. /// <summary>
  113. /// 执行一个查询,返回结果集的首行首列。忽略其他行,其他列
  114. /// </summary>
  115. /// <param name="sql">要执行的SQl命令</param>
  116. /// <returns></returns>
  117. public Object ExecuteScalar(string sql)
  118. {
  119. return ExecuteScalar(sql, CommandType.Text, null);
  120. }
  121. /// <summary>
  122. ///
  123. /// </summary>
  124. /// <param name="sql"></param>
  125. /// <param name="commandType"></param>
  126. /// <returns></returns>
  127. public Object ExecuteScalar(string sql, CommandType commandType)
  128. {
  129. return ExecuteScalar(sql, commandType, null);
  130. }
  131. /// <summary>
  132. ///
  133. /// </summary>
  134. /// <param name="sql"></param>
  135. /// <param name="commandType">参数类型</param>
  136. /// <param name="parameters"></param>
  137. /// <returns></returns>
  138. public Object ExecuteScalar(string sql,CommandType commandType, SqlParameter[] parameters)
  139. {
  140. Object result=null;
  141. SqlConnection con=new SqlConnection(connectionString);
  142. SqlCommand cmd=new SqlCommand(sql,con);
  143. cmd.CommandType= commandType;
  144. if(parameters!=null)
  145. {
  146. foreach (SqlParameter parapmeter in parameters)
  147. {
  148. cmd.Parameters.Add(parapmeter);
  149. }
  150. }
  151. con.Open();
  152. result=cmd.ExecuteScalar();
  153. con.Close();
  154. return result;
  155. }
  156. /// <summary>
  157. /// 对数据库进行增删改的操作
  158. /// </summary>
  159. /// <param name="sql">要执行的sql命令</param>
  160. /// <returns></returns>
  161. public int ExecuteNonQuery(string sql)
  162. {
  163. return ExecuteNonQuery(sql, CommandType.Text, null);
  164. }
  165. /// <summary>
  166. /// 数据库进行增删改的操作
  167. /// </summary>
  168. /// <param name="sql">对数据库进行操作的sql命令</param>
  169. /// <param name="commandType">要执行查询语句的类型,如存储过程或者sql文本命令</param>
  170. /// <returns></returns>
  171. public int ExecuteNonQuery(string sql, CommandType commandType)
  172. {
  173. return ExecuteNonQuery(sql, commandType, null);
  174. }
  175. /// <summary>
  176. /// 对数据库进行增删改的操作
  177. /// </summary>
  178. /// <param name="sql">要执行的sql语句</param>
  179. /// <param name="commandType">要执行的查询语句类型,如存储过程或者sql文本命令</param>
  180. /// <param name="parameters">Transact-SQL语句或者存储过程的参数数组</param>
  181. /// <returns></returns>
  182. public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)
  183. {
  184. int count = 0;
  185. SqlConnection con = new SqlConnection(connectionString);
  186. SqlCommand cmd = new SqlCommand(sql, con);
  187. cmd.CommandType = commandType;
  188. if (parameters != null)
  189. {
  190. foreach(SqlParameter parameter in parameters)
  191. {
  192. cmd.Parameters.Add(parameter);
  193. }
  194. }
  195. con.Open();
  196. count = cmd.ExecuteNonQuery();
  197. con.Close();
  198. return count;
  199. }
  200. /// <summary>
  201. /// 返回当前连接的数据库中所有用户创建的数据库
  202. /// </summary>
  203. /// <returns></returns>
  204. public DataTable GetTables()
  205. {
  206. DataTable table = null;
  207. using (SqlConnection con = new SqlConnection(connectionString))
  208. {
  209. con.Open();
  210. table = con.GetSchema("Tables");
  211. }
  212. return table;
  213. }
  214. }

如果我们建立了一个对数据库访问的通用类以后,在随数据库进行操作的时候吗,就只需要先实例化对象,然后根据自己的需要,调用相应的方法就可以完成对数据库的所有操作。这就是数据库访问层和业务逻辑层分开的好处。

这样书写的代码,可以大大的减少我们代码的复杂度。而且,繁琐度也大大的降低了。

本文转自yisuowushinian 51CTO博客,原文链接:http://blog.51cto.com/yisuowushinian/999324,如需转载请自行联系原作者

【ASP.NET开发】ASP.NET对SQLServer的通用数据库访问类相关推荐

  1. 简单程序所需要的简单 asp.net通用数据库访问类

    简单程序不需要分层,各页面共用相同的通用数据库访问类即可 using System;  using System.Data;  using System.Data.SqlClient; namespa ...

  2. ASP.NET2.0通用数据访问类

    .NET框架自带的数据提供器包括SQLServer(System.Data.SqlClient).Oracle    (System.Data.Oracleclient).OLEDB(System.D ...

  3. JavaWeb开发基础:连接数据库的demo和数据库连接工具类DB.java

    JavaWeb开发基础:连接数据库的demo和数据库连接工具类DB.java import javax.servlet.*; import javax.servlet.http.*; import j ...

  4. 【ASP.NET开发】.NET三层架构简单解析

    这篇文章本来应该很早就写出来的,但是一直苦于自己的精神能力有限,而且已经到了我们学校的考试周,所以时间上还是有点紧迫.关键的一点就是,找不到合理的思路来写,思路没有的话,就算是再好的素材,也写不来大家 ...

  5. php 对接 asp,PHP模拟asp中response类实现方法

    本文实例讲述了PHP模拟asp中response类的方法.分享给大家供大家参考.具体如下: 习惯了asp或是asp.net开发的人, 他们会经常用到response类,这个类用于处理客户端的响应,可以 ...

  6. SQLServer数据库访问帮助类

    1.web.config配置数据库连接字符串 1 <?xml version="1.0"?> 2 <configuration> 3 <appSett ...

  7. asp毕业设计——基于asp+sqlserver的人力资源管理系统设计与实现(毕业论文+程序源码)——人力资源管理系统

    基于asp+sqlserver的人力资源管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的人力资源管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  8. asp毕业设计——基于asp+sqlserver的旅游网站设计与实现(毕业论文+程序源码)——旅游网站

    基于asp+sqlserver的旅游网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的旅游网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

  9. asp毕业设计——基于asp+sqlserver的选题管理系统设计与实现(毕业论文+程序源码)——选题管理系统

    基于asp+sqlserver的选题管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的选题管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

最新文章

  1. 清华大学计算机博士,带你搞定大厂面试题
  2. Android 应用防止被二次打包指南
  3. 【转载】target='_blank' 安全漏洞示例
  4. 《软件架构设计》学习笔记--6--6大步骤2:领域建模
  5. python爬取论坛付费内容_Python爬虫抓取论坛关键字过程解析
  6. 2017年,Java程序猿10本经典好书推荐
  7. 嵌入式开发环境构建_设计模式:不可变的嵌入式构建器
  8. 通过粘性仙人掌基元进行延迟加载和缓存
  9. Java多线程之可见性之volatile
  10. 接收list参数_Python 犄角旮旯--List
  11. Win10系统禁用驱动程序强制签名
  12. R语言-解决for modifying Try removing ‘00LOCK’的问题
  13. 消息推送之百度云推送Android集成与用法
  14. Camunda与springboot集成入门实战
  15. 未能启动apache服务器,教你apache服务无法启动一直失败怎么办
  16. C++11 emplace_back
  17. 作业帮面经(已拿offer)
  18. 系统工程理论与实践投稿经验_【系统工程理论与实践杂志】投稿经验与期刊点评_审稿、版面费用_退稿_要求与流程_影响因子_级别_发行周期_见刊时间_极作期刊...
  19. c++初学基础小知识
  20. Eclipse插件2

热门文章

  1. SAP MM IV中的Duplicated Invoice Check功能的测试
  2. dgl库之高级用法dgl.DGLGraph.update_all
  3. 可视化解释11种基本神经网络架构
  4. 从人类交互通信发展简史看元宇宙发展趋势及商业价值
  5. 新能源汽车:大变革催生十万亿市场空间
  6. 15年来,自然语言处理发展史上的8大里程碑
  7. 关于量子计算,你应该知道的七个事实
  8. 【研究】大脑如何在“知道”与“无知”之间做出决定
  9. 一张图:AI领域里各领风骚的BAT三巨头
  10. 2017年诺贝尔生理学或医学奖揭晓