MIS2000 Lab. -- ASP.NET学习&分享 / ASP.NET案例精编(清华大学出版社)
您好,我来自台湾。很高兴与各位分享一些成果。希望对您有帮助。出版书籍是「ASP.NET案例精编 / 清华大学出版社」。

 

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案例精编 / 清华大学出版社

posted on 2010-10-15 09:37  MIS2000 Lab.  阅读(334)  评论(0编辑  收藏  举报


ASP.NET案例精编——适用于VS 2005/2008(配光盘)
 

当当网购买 http://product.dangdang.com/product.aspx?product_id=20583373&ref=search-1-pub