自己动手写的版本 ---- 网站的 Detail程序 (DataReader)
2010-10-15 09:47
357 查看
http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/24/3445.aspx
Detail的程序
点选任何一个产品,就会看见这个产品的明细、内容、价格....等等
=======================================================================================
如果上面的DataReader,您要使用「参数」来作,以避免初步的 SQL Injection(资料隐码)攻击
请稍作修改如下:
'**** 重 点!*************************************************
'**** 改用 SqlCommand的 @参数来作
Dim cmd As 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 '************************************************************
=======================================================================================
2009/10月补充:
关于本文的范例,我写了一篇文章,以PDF档分享给大家。当作本书的后续补充章节。
请看: [习题] 补充本书第14章的范例--自己撰写ADO.NET程序 / 网站的首页
本范例已经收录在「下集」,并且集结出书 ASP.NET专题实务 II -- 范例集与 4.0新功能
Detail的程序
点选任何一个产品,就会看见这个产品的明细、内容、价格....等等
'----自己写的------------------------------ Imports System.Data Imports System.Data.SqlClient '----自己写的----------------------------- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'ASP.NET程序的四大步骤。把数据库的数据,呈现在画面上! '第一,连接数据库 '----自己手写一段「数据库联机字符串」,如下: Dim Conn As SqlConnection = New SqlConnection("Server=localhost;uid=test;pwd=test;database=test") Conn.Open() '第二,执行SQL指令 Dim SQLstr As String = Nothing '---- 在VS 2005/2008里面,设定变量都要有一个「启始值」、「定义值」,不然的话,就会出现警告讯息。 '---- 虽然不会执行错误,但画面上会出现绿色曲线,作为警告。所以我们只好设定为 = Nothing If Request("id") = "" Then SQLstr = "select * from test where id = 1" Else SQLstr = "select * from test where id =" & Request("id") End If Dim cmd As New SqlCommand(SQLstr, Conn) Dim dr As SqlDataReader = cmd.ExecuteReader() '---- 执行SQL指令 '第三,自由发挥 If Not dr.READ() Then Response.Write("抱歉!找不到数据!") cmd.Cancel() dr.Close() Else Response.Write("文章标题:<h3>" & dr.Item("title") & "</h3><hr>") Response.Write("发表日期:<font color=red>" & dr.Item("test_time") & "</font><br>") Response.Write("文章摘要:<font color=gray>" & dr.Item("summary") & "</font><hr>") '---- 下面这一段,是「按下Enter键」作文章换行 --------- start Dim u_command As String u_command = Replace(dr.Item("article"), vbCrLf, "<br>") u_command = Replace(u_command, "<", "<") u_command = Replace(u_command, "<br>", "<br>") Response.Write("文章内容:<br>" & u_command) '----------------------------------------------------------------------------------- end Response.Write("<p align=right>作者:" & dr.Item("author") & ".....文章点阅率:" & dr.Item("hit_no") & "</p>") Dim hit_no As Integer = CInt(dr.Item("hit_no")) cmd.Cancel() dr.Close() '---- 必须先关闭「已经使用中」的DataReader,才能使用 第二个DataReader。 '---- 下面这一段,是有人看这篇文章,就「增加点阅率」 --------- start If Not Request("id") = "" Then Dim SQLstr2 As String = "Update test set hit_no =" & (hit_no + 1) & " where id =" & Request("id") Dim cmd2 As New SqlCommand(SQLstr2, Conn) cmd2.ExecuteNonQuery() cmd2.Cancel() End If '------------------------------------------------------------------------------------------------ end End If '第四,关闭联机 Conn.Close() End Sub
=======================================================================================
如果上面的DataReader,您要使用「参数」来作,以避免初步的 SQL Injection(资料隐码)攻击
请稍作修改如下:
'**** 重 点!*************************************************
'**** 改用 SqlCommand的 @参数来作
Dim cmd As 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 '************************************************************
=======================================================================================
2009/10月补充:
关于本文的范例,我写了一篇文章,以PDF档分享给大家。当作本书的后续补充章节。
请看: [习题] 补充本书第14章的范例--自己撰写ADO.NET程序 / 网站的首页
本范例已经收录在「下集」,并且集结出书 ASP.NET专题实务 II -- 范例集与 4.0新功能
相关文章推荐
- gcc编译静态库到自己的程序 解决在不同linux下因libc版本问题而不能运行
- 自己动手编译、运行Java程序,解析package的作用
- 自己动手写的内存管理程序
- 自己根据“XDOWNPAGE ASP版本”分页程序修改(添加前十页,后十页功能)
- 微信小程序ajax请求到自己的网站
- 自己动手编译、运行Java程序
- 自己動手寫的版本 ---- 網站的 Master程式 (DataReader)
- Delphi:程序自己删除自己,适用于任何windows版本(含源码)
- 获得自己程序的版本
- 帅呆了,自己动手解除一个对DataReader对象的疑惑
- Java高并发程序-Chapter3 JDK并发包(第十四讲)同步控制之自己动手实现 CoutDownLatch
- 自己动手编写devExpress组件自动安装程序
- 自己动手写一个判断网址合法的C/C++的正则表达式程序
- Delphi:程序自己删除自己,适用于任何windows版本(含源码)
- 获得自己程序的版本
- 自己动手搞定支付宝手机网站支付接口 FOR ECShop
- 自己动手写一个android手机上的一键锁屏程序
- 如何自己动手编译自定义版本的最新jQuery类库?
- Win32 SDK基础(2)—— 自己动手用cl.exe和link.exe编译和连接程序
- [置顶] 网站浏览统计功能的简单实现-- vb2005xu自己动手系列(2)