浅谈ASP.NET数据访问层
创始人
2024-05-01 17:11:29
0

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

【编辑推荐】

  1. C#局部类型介绍
  2. C#固定指针简单介绍
  3. 浅析C# FTP WebRequest对象
  4. C#分部方法的应用场景
  5. 简单介绍VB.NET和C#

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...