[.ashx檔?泛型处理例程?]基础入门#3....ADO.NET 与 将DB里面的二进制图片还原
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_03_db_picture_show.aspx
有了前两篇文章的说明
[.ashx檔?泛型处理例程?]基础入门#1....能否用中文教会我?别说火星文?
[.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
现在可以搭配ADO.NET写写看。
书本「上集」Ch.9 GridView的超级链接字段,改用 .ashx来呈现内容
透过 URL网址(例如 test_02_DB.ashx?id=5)来传递信息
执行成果如下:

==== HTML画面设计 ====
(不需撰写后置程序代码。
这个画面用 GridView + SqlDataSource,精灵设定就做好了)

==== .ashx档的内容 ====
把程序写在上图的「红色框框」里面

using System;
using System.Web;
//----自己写的(宣告)----
using System.Web.Configuration; // Web.Config文件的DB连结字符串。
using System.Data;
using System.Data.SqlClient;
//----自己写的(宣告)----
public void ProcessRequest (HttpContext context) {
//context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
//=======微软SDK文件的范本=======
//----上面已经事先写好NameSpace -- using System.Web.Configuration; ----
//----或是写成下面这一行 (连结数据库)----
SqlConnection Conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["写在Web.Config档案里面,数据库的连结字符串"].ConnectionString);
SqlDataReader dr = null;
SqlCommand cmd = new SqlCommand("select id,test_time,title from test where id = @id", Conn);
// 批注:请使用参数来处理,避免SQL Injection攻击
cmd.Parameters.AddWithValue("@id", context.Request["id"]);
try //==== 以下程序,只放「执行期间」的指令!=====================
{ //== 第一,连结数据库。
Conn.Open(); //---- 这时候才连结DB
//== 第二,执行SQL指令。
dr = cmd.ExecuteReader(); //---- 这时候执行SQL指令,取出数据
//==第三,自由发挥,把执行后的结果呈现到画面上。
dr.Read();
context.Response.ContentType = "text/plain";
context.Response.Write("<html>");
context.Response.Write(" <body>");
context.Response.Write(" <h3>Hello from a synchronous custom HTTP handler.</h3>");
context.Response.Write(" *****" + dr["title"] );
context.Response.Write(" </body>");
context.Response.Write("</html>");
}
catch (Exception ex)
{ //---- 如果程序有错误或是例外状况,将执行这一段
context.Response.Write("<b>Error Message---- </b>" + ex.ToString() + "<HR />");
}
finally
{ // == 第四,释放资源、关闭数据库的连结。
if (dr != null)
{
cmd.Cancel();
dr.Close();
}
if (Conn.State == ConnectionState.Open)
{
Conn.Close();
Conn.Dispose();
}
}
}
***********************************************************************************************************************
完成后,可以延伸上面的技巧,
搭配上一个范例,完成我们想要的功能
例如:图片上传之后,存入数据库的「Image字段」里面
透过.ashx档案,将这些二进制的内容,还原成一张图片,呈现在网页上。
从数据库里面,读取二进制的图片文件,请参阅:
http://www.cnblogs.com/travelcai/archive/2007/09/27/907203.html
http://davidma168.wordpress.com/2011/01/25/ashx-%E8%BC%B8%E5%87%BA%E5%9C%96%E7%89%87/
http://davidma168.wordpress.com/2011/01/25/ashx-output-image-2/
做了再说 (千万不要没动手做,就自己吓自己)
然后回头看看微软 msdn网站的说明
是不是觉得更清楚了?
是不是发现下面的专有名词---
IsReusable, IHttpHandler, ProcessRequest, HttpContext.......这些火星文已经慢慢变成稍微看得懂的东西?
我在前面的小范例,已经动手操作过了、见过面了(不陌生)
如此一来,心中不会畏惧、不要怕......后续学习是否更轻松?
做过以后,回头看「理论」一定更能吸收,不是吗?
微软 msdn网站的说明:http://msdn.microsoft.com/zh-tw/library/bb398986(VS.90).aspx
微软 msdn论坛,其它前辈的说明:http://social.msdn.microsoft.com/Forums/zh-TW/8edb2493-ec76-4e88-9926-f17fa03cddcb/aspnet-ashx
我以前说过,我有一套自己的「学习心法」
我靠着它,自我学习!
越学越轻松。
我出书、教课
与其说要分享多少个范例? 不如说,我在 推广这样的学习方法
[转贴]GridView 72般绝技-- 作者:清清月儿。兼论:我学习.NET的心路过程
http://www.dotblogs.com.tw/mis2000lab/archive/2011/12/27/63495.aspx
如果您觉得这样的文章说明,很简单实用!立即有效!
请您支持 我的书。
但很可惜,书本的文字说明,永远不如「面对面」上课
看书练功,可能要三个月~半年,而且看的一知半解???
上课只要几天,就能抓到重点!!...... 「醍醐灌顶」就是这个意思!!
请 参考一下 我 的 课 程
[.ashx檔?泛型处理例程?]基础入门#3....ADO.NET 与 将DB里面的二进制图片还原的更多相关文章
- [.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField)
[.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField) http://www.dotblogs.c ...
- [.ashx檔?泛型处理例程?]基础入门#2....FileUpload上传前,预览图片(两种作法--ashx与JavaScript)
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_02_fileupload_picture_p ...
- [.ashx檔?泛型处理例程?]基础入门#1....能否用中文教会我?别说火星文?
原文出處 http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/20/ashx_beginner_01.aspx [.ashx檔?泛型处理例程? ...
- .NET ORM 的 “SOD蜜”--零基础入门篇
PDF.NET SOD框架不仅仅是一个ORM,但是它的ORM功能是独具特色的,我在博客中已经多次介绍,但都是原理性的,可能不少初学的朋友还是觉得复杂,其实,SOD的ORM是很简单的.下面我们就采用流行 ...
- C#基础入门 九
C#基础入门 九 集合 对于很多应用程序,需要创建和管理相关对象组,有两种方式可以将对象分组,一是创建对象数组,如 object[] obj=new object[3]{1,2.33,"st ...
- C#基础入门 八
C#基础入门 八 泛型 C#中的泛型能够将类型作为参数来传递,即在创建类型时用一个特定的符号,如"T"来作为一个占位符,代替实际的类型,等待实例化时用一个实际的类型来代替. pub ...
- MySQL基础入门(1)
MySQL基础入门(1) 为什么学习MySQL 关系数据库管理系统(Relational Database Management System, RDBMS)是一种极为重要的工具,其应用十分广泛,从商 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- 「译」JUnit 5 系列:基础入门
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...
随机推荐
- android小细节
1.资源包图片尽量控制在50k以内,否则可能读取失败 2.资源图片建议使用png格式,此格式在android系统上支持最好.对于jpeg和gif格式的图片,在android4.0以后版本,通过系统自缩 ...
- 自定义View的基本流程
1.明确需求,确定你想实现的效果2.确定是使用组合控件的形式还是全新自定义的形式,组合控件即使用多个系统控件来合成一个新控件,你比如titilebar,这种形式相对简单,参考:http://blog. ...
- 在开发板Linux上挂载"驱动"挂载不成功,出现提示server 172.27.52.100 not responding, still trying
1.在开发板具体操作步骤如下: 1.1 :设置IP ifconfig eth0 172.27.52.200 1.2 :ping通 虚拟机Linux 主机Linux ping XXX.XXX.X ...
- 聚类结果的评估指标及其JAVA实现
一. 前言 又GET了一项技能.在做聚类算法的时候,由于要评估所提出的聚类算法的好坏,于是需要与一些已知的算法对比,或者用一些人工标注的标签来比较,于是用到了聚类结果的评估指标.我了解了以下几项. 首 ...
- 从手工测试转型web自动化测试继而转型成专门做自动化测试的学习路线。
在开始之前先自学两个工具商业web自动化测试工具请自学QTP:QTP的学习可以跳过,我是跳过了的.开源web自动化测试工具请自学Selenium:我当年是先学watir(耗时1周),再学seleniu ...
- FlashBuilder的快捷键
Ctrl-F11: 执行(Run) F11: 除错(Debug) Ctrl-Alt-Down: 重复目前所在编辑列(Repeat current line ) Alt-Up: 移动本列,或选择列往上移 ...
- 【LeetCode】3.Longest Substring Without Repeating Characters 最长无重复子串
题目: Given a string, find the length of the longest substring without repeating characters. Examples: ...
- EF调用存储过程遇到的问题
注意 实体类Statistics的字段名和存储过程返回集合的列名要相同才行
- ant风格是什么?
我们在看java技术书籍的过程中,当加载文件时总会遇到是否支持ant风格路径加载,这里说的ant风格是什么意思呢,今天我查了一下,明白了什么意思,现在总结一下 ANT通配符有三种: 通配符 说明 ? ...
- 完成《Java编程入门》初稿
Java编程入门 现在的运维工程师不但要懂得集合网络.系统管理而且要和开发人员一起调试系统,社会上也需要"复合性"的运维人员,所以需要做运维的也要懂一些开发,知道软件系统接口的调试 ...