浅谈ASP.NET数据访问层

开发 后端
这里每个项目都要用到ASP.NET数据访问层,我做的也不例外,但是我把数据访问层做成独立项目,没有什么太大的目的,数据访问层,仅仅做数据访问用,不包含任何逻辑。

如果不使用ASP.NET数据访问层,那么你的代码里会出现很多SqlConnection、SqlCommand、SqlDataReader、Open、 Close……这些类和方法,而且代码量很大,让你不胜其烦,而且代码写起来,其实都是体力活,没有技术含量。

每个项目都要用到ASP.NET数据访问层,我做的也不例外,但是我把数据访问层做成独立项目,没有什么太大的目的,数据访问层,仅仅做数据访问用,不包含任何逻辑。

以下是自己改进的ASP.NET数据访问层,希望能得到更多人更好的改进建议,谢谢啦。

  1. usingSystem;  
  2. usingSystem.Data;  
  3. usingSystem.Data.SqlClient;  
  4. usingSystem.Configuration;  
  5. usingSystem.Web;  
  6. usingSystem.Web.Security;  
  7. usingSystem.Web.UI;  
  8. usingSystem.Web.UI.WebControls;  
  9. usingSystem.Web.UI.WebControls.WebParts;  
  10. usingSystem.Web.UI.HtmlControls;  
  11. usingSystem.Text;  
  12. ///<summary> 
  13. ///数据访问层,数据库操作类  
  14. ///summary> 
  15. publicclassDatabase  
  16. {  
  17. publicstaticstringConnectionStrings=ConfigurationManager.
    ConnectionStrings["ConnectionStrings"].ConnectionString;  
  18. ///<summary> 
  19. ///执行带SqlParameter的sql语句,成功返回true,失败返回false  
  20. ///summary> 
  21. ///<paramnameparamname="sql">sql语句param> 
  22. ///<paramnameparamname="Param">SqlParameter[]参数列表param> 
  23. ///<returns>returns> 
  24. publicstaticintExecuteNonQuery(stringsql,paramsSqlParameter[]Param)
  25. //执行带SqlParameter的sql语句,返回影响的行数  
  26. {  
  27. //HttpContext.Current.Response.Write(sql+"<br>");  
  28. using(SqlConnectionconn=newSqlConnection(ConnectionStrings))  
  29. {  
  30. if(conn.State!=ConnectionState.Open)  
  31. conn.Open();  
  32. SqlTransactionTran=conn.BeginTransaction();//开始事务  
  33. SqlCommandcmd=newSqlCommand(sql,conn,Tran);  
  34. if(Param!=null)  
  35. cmd.Parameters.AddRange(Param);  
  36. try  
  37. {  
  38. intResult=cmd.ExecuteNonQuery();  
  39. Tran.Commit();  
  40. cmd.Parameters.Clear();  
  41. returnResult;  
  42. }  
  43. catch(Exceptionerr)  
  44. {  
  45. HttpContext.Current.Response.Write(err.Message+"<br>"+err.StackTrace);  
  46. Tran.Rollback();//回滚事务  
  47. return0;  
  48. }  
  49. }  
  50. }  
  51.  
  52. ///<summary> 
  53. ///执行带SqlParameter的sql,返回DataReader  
  54. ///summary> 
  55. ///<paramnameparamname="sql">sql语句param> 
  56. ///<paramnameparamname="Param">SqlParameter[]参数列表param> 
  57. ///<returns>返回SqlDataReaderreturns> 
  58. publicstaticSqlDataReaderExecuteReader(stringsql,paramsSqlParameter[]Param)
  59. //执行带SqlParameter的sql,返回DataReader  
  60. {  
  61. SqlConnectionconn=newSqlConnection(ConnectionStrings);  
  62. SqlCommandcmd=newSqlCommand(sql,conn);  
  63. if(Param!=null)  
  64. cmd.Parameters.AddRange(Param);  
  65. if(conn.State!=ConnectionState.Open)  
  66. conn.Open();  
  67.  
  68. try  
  69. {  
  70. SqlDataReaderdr=cmd.ExecuteReader(CommandBehavior.CloseConnection);  
  71. cmd.Parameters.Clear();  
  72. returndr;  
  73. }  
  74. catch(Exceptionerr)  
  75. {  
  76. conn.Close();  
  77. HttpContext.Current.Response.Write(err.Message+"<br>"+err.StackTrace);  
  78. returnnull;  
  79. }  
  80. }  
  81.  
  82. ///<summary> 
  83. ///执行带SqlParameter的sql,返回DataTable  
  84. ///summary> 
  85. ///<paramnameparamname="sql">SQL语句param> 
  86. ///<paramnameparamname="Param">SqlParameter[]参数列表param> 
  87. publicstaticDataTableGetDataTable(stringsql,paramsSqlParameter[]Param)
  88. //执行带SqlParameter的sql,返回DataTable  
  89. {  
  90. SqlConnectionconn=newSqlConnection(ConnectionStrings);  
  91. DataTabledt=newDataTable();  
  92. SqlDataAdapterda=newSqlDataAdapter(sql,conn);  
  93. if(Param!=null)  
  94. da.SelectCommand.Parameters.AddRange(Param);  
  95. SqlCommandBuildercb=newSqlCommandBuilder(da);  
  96. da.Fill(dt);  
  97. conn.Close();  
  98. //HttpContext.Current.Response.Write(sql+"<br>");  
  99. returndt;  
  100. }  
  101.  
  102. ///<summary> 
  103. ///执行带SqlParameter的sql,返回查询结果***行***列的数据  
  104. ///summary> 
  105. ///<paramnameparamname="sql">SQL语句param> 
  106. ///<paramnameparamname="Param">SqlParameter[]参数列表param> 
  107. ///<returns>returns> 
  108. publicstaticObjectExecuteScalar(stringsql,paramsSqlParameter[]Param)
  109. //执行带SqlParameter的sql,返回查询结果***行***列的数据  
  110. {  
  111. //HttpContext.Current.Response.Write(sql+"<br>");  
  112. using(SqlConnectionconn=newSqlConnection(ConnectionStrings))  
  113. {  
  114. if(conn.State!=ConnectionState.Open)  
  115. conn.Open();  
  116. SqlTransactionTran=conn.BeginTransaction();  
  117. SqlCommandcmd=newSqlCommand(sql,conn,Tran);  
  118. if(Param!=null)  
  119. cmd.Parameters.AddRange(Param);  
  120. try  
  121. {  
  122. objectResult=cmd.ExecuteScalar();  
  123. cmd.Parameters.Clear();  
  124. Tran.Commit();  
  125. returnResult;  
  126. }  
  127. catch(Exceptionerr)  
  128. {  
  129. HttpContext.Current.Response.Write(err.Message+"<br>"+err.StackTrace);  
  130. Tran.Rollback();  
  131. returnnull;  
  132. }  
  133. }  
  134. }  
  135.  
  136. ///<summary> 
  137. ///生成SqlParameter参数  
  138. ///summary> 
  139. ///<paramnameparamname="ParamName">参数名param> 
  140. ///<paramnameparamname="paramType">参数类型param> 
  141. ///<paramnameparamname="ParamValue">参数的值param> 
  142. publicstaticSqlParameterGetParameter
    (stringParamName,SqlDbTypeparamType,ObjectParamValue)
  143. //生成SqlParameter参数  
  144. {  
  145. SqlParameterparam=newSqlParameter(ParamName,paramType);  
  146. param.Value=ParamValue;  
  147. returnparam;  
  148. }  

【编辑推荐】

  1. C#局部类型介绍
  2. C#固定指针简单介绍
  3. 浅析C# FTP WebRequest对象
  4. C#分部方法的应用场景
  5. 简单介绍VB.NET和C#
责任编辑:佚名 来源: 博客园
相关推荐

2009-07-20 17:12:17

ASP.NET访问数据

2009-08-04 10:17:55

ASP.NET SqlASP.NET数据访问

2009-07-24 13:25:43

创建数据访问层

2009-07-24 14:15:51

数据访问层

2009-07-22 17:21:27

ASP.NET 2.0

2009-07-24 10:52:42

ASP.NET ISA

2009-07-22 16:11:43

ASP.NET AJA

2009-07-20 15:30:11

ASP.NET应用

2009-08-03 18:47:12

ASP.NET数据缓存

2009-08-11 10:21:54

ASP.NET构建数据

2009-08-05 15:29:33

ASP.NET For

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-28 16:03:23

ASP.NET状态服务

2009-07-23 15:44:39

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-08-10 10:19:47

ASP.NET组件设计

2009-07-23 15:24:37

ASP.NET Ima

2009-07-21 14:16:02

ASP.NET管道优化

2011-08-23 10:58:59

2009-07-27 16:19:59

ASP.NET报表控件
点赞
收藏

51CTO技术栈公众号