ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[ADO.NET] DataReader的标准范例 for ASP.NET (Code Behind版)

2019-08-11 13:00:32  阅读:438  来源: 互联网

标签:DataReader http aspx Behind ADO NET com


原文链接:http://www.cnblogs.com/mis2000lab/archive/2010/10/15/2008_04_24_3446.html

 

http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/24/3446.aspx

 

很多时候,用手写的方式,以 DataReader来列出数据,又快又好用。

相信大家都用的到。


 

 

以下是我在微软SDK文件找到的模板,写得很标准~

 

这里提供两个版本,第一个版本是采用 Try....Catch....Finally等侦错过程(VB.NET语法解说),抄起来放在手边一定用的到。

不瞒您说,我衷心推荐微软这份官方文件(资料和ADO.NET),是介绍最好、最浅显的文章了!

 

 '=========资料来源:微软SDK文件=========
ADO.NET:从 SQL Server 撷取资料
http://cht.gotdotnet.com/quickstart/howto/doc/adoplus/sqldtreader.aspx

范例 Northwind 数据库的  Employees 数据表
'=================================

完整程序代码请看---- http://cht.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/howto/samples/adoplus/sqldtreader/sqldtreader.srca

 '--完全手写程序,HTML画面上,不需要拉进任何组件

    Dimdr as SqlDataReader
    DimConn as SqlConnection = New SqlConnection("数据库的联机字符串,请自己修改")
    Dimcmd as SqlCommand = New SqlCommand("SELECT* from 资料表", mySqlConnection)

    try
      Conn.Open()
      dr = cmd.ExecuteReader()

      do while (dr.Read())
         '--把资料展现到画面上。这一区请您请自由发挥

         '--------------------------------------------------------
      loop

    catch e as Exception
      Response.Write(e.ToString())

    finally
      if Not (dr is Nothing)  ' --关闭 DataReader

        cmd.Cancel()  '--我自己补上的,原因在下面有讲。
        dr.Close()
      end if
     
      if (Conn.State = ConnectionState.Open)   ' --关闭 DB的联机
        Conn.Close()
      end if
    end try


注:上面的范例,我有改成C#语法,请看-- [C#]把「ASP.NET专题实务」一书的范例,从 VB语法转成C#

 

 

====================================================================

 

 

 

第二个版本是采用Using....End UsingVB.NET语法解说),抄起来放在手边一定用的到。根据微软文件的说法,End Using的用法,是结束 Using 区块的定义,并处置 (Dispose) 它控制的所有资源。

    DimqueryString As String= "SELECT * From 资料表;"

    Using Conn As New SqlConnection("数据库的联机字符串")
       Dim my_command AsNew SqlCommand(queryString, Conn)
       Conn.Open()  
       '-- 数据库联机!但后面「不」需要写关闭的动作(Conn.Close()),因为Using....EndUsing 会自己处理

       Dim reader As SqlDataReader= my_command.ExecuteReader()

       While reader.Read()
           '-- 自己写程序,展现字段的值。这一区请您请自由发挥

           '---------------------------------------------------------------
       End While

       '-- 关闭DataReader

        my_Command.Cancel()  '--我自己补上的,原因在下面有讲。
       reader.Close()
    End Using

使用Using来写程序的人,最好看看这篇文章的解释:http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=1417995&SiteID=14

 

 


不要以为微软的文件与范例,一定就毫无缺点了。看看下面的说明,我们还是可以进一步最佳化!

 

DbDataReader.Dispose() 方法 -- 释放 DbDataReader所使用的资源,并呼叫 .Close()方法。

 

务必先关闭 SqlCommand之后(执行 .Cancel()方法),再来关闭 DataReader,请看:http://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqldatareader.close.aspx


 

 资料来源:微软MSDN网站--IDataReader 接口 http://msdn2.microsoft.com/zh-tw/library/system.data.idatareader.aspx 

 

=======================================================================================

如果上面的 DataReader,您要使用「参数」来作,以避免初步的SQL Injection(资料隐码)攻击

请稍作修改如下:

           '**** 重 点!*************************************************
           '****改用 SqlCommand的 @参数来作
            Dim cmdAs New SqlCommand("select * from test where id = @id", Conn)

               cmd.Parameters.Add("@id", SqlDbType.Int)
               cmd.Parameters("@id").Value = CType(Request("id"), Integer)

 

            '== 参考网址  http://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlcommand.parameters.aspx
            '************************************************************

 

=======================================================================================

 

2010/5/19补充: [ADO.NET] DataReader的「Inline Code」范例 for ASP.NET

 

2010/6/18补充: [转贴]ADO.NET -- DataReader性能优化 (作者:WizardWu)

 

 

 用本文的范例,稍加修改,就能做出底下三个功能:

  1. [习题]ADO.NET #7,避免相同数据 重复输入(重复新增)
  2. [习题]ADO.NET #8,文章(产品)的浏览次数 / 点阅数 / 点击次数,怎么作?
  3. Master-Detail的范例,是网页最常使用的必备功能! 

举例来说:我架设一个购物网站,「首页」展现所有物品。
当我 点选任何一个物品,就能看到这东西的明细内容&照片&价格.....等等。这就是 Master-Detail的功能。

 

我提供最简单的作法,不套用任何Web控件,请看看这个范例(共有两支程序,第一个Master(首页)第二个Detail(物品明细))。均是以Visual Studio 2005/2008/2010开发的后置程序代码(Code Behind)。

master版,http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/24/3444.aspx

detail版,http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/24/3445.aspx

 

 

 

 

 

 

 本系列共有下面文章:

 

范例:

此范例已经收录在书籍里面出版了。请看:  ASP.NET案例精编 / 清华大学出版社

转载于:https://www.cnblogs.com/mis2000lab/archive/2010/10/15/2008_04_24_3446.html

标签:DataReader,http,aspx,Behind,ADO,NET,com
来源: https://blog.csdn.net/weixin_30407099/article/details/99181342

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有