[.ashx檔?泛型處理常式?]基礎入門#3....ADO.NET 與 將DB裡面的二進位圖片還原(基礎篇)

摘要:[.ashx檔?泛型處理常式?]基礎入門#3....ADO.NET 與 將DB裡面的二進位圖片還原(基礎篇)




 

有了前兩篇文章的說明

[.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();
            }
        }
                
    }
 

2013/11/30補充:使用 VS 2013的話,上面的範例會出現錯誤

 

***********************************************************************************************************************

完成後,可以延伸上面的技巧,

搭配上一個範例,完成我們想要的功能

 

例如:圖片上傳之後,存入資料庫的「Image欄位」裡面

透過 .ashx檔案,將這些二進位的內容,還原成一張圖片,呈現在網頁上。

 

從資料庫裡面,讀取二進位的圖片檔,請參閱:
 
 
 
 

 

參考上面文章的作法
我也分享我寫好的範例,希望對您有幫助。
 
上述的範例,一併在下面文章給您下載
 
 
檔案下載
 

 

 

 

 

做了再說  (千萬不要沒動手做,就自己嚇自己)

      然後回頭看看微軟 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

 

 

我以前說過,我有一套自己的「學習心法」

    我靠著它,自我學習!

    越學越輕鬆。

 

我出書、教課

    與其說要分享多少個範例?  不如說,我在 推廣 這樣的學習方法

 

 

如果您覺得這樣的文章說明,很簡單實用!立即有效!

請您支持 我 的 書

 

但很可惜,書本的文字說明,永遠不如「面對面」上課

      看書練功,可能要三個月~半年,而且看的一知半解???

      上課只要幾天,就能抓到重點!!......   「醍醐灌頂」就是這個意思!!

 參考一下 我 的 課 程

 

 

下一篇文章:[.ashx檔?泛型處理常式?]基礎入門#4....jQuery File Upload (for IE 瀏覽器)

 

 

 

 

 

 
.......................以下是廣告........................................................................................
 
 
我的書、我的課程,絕對沒有太多招數
 
都是用最基本的技巧
組合成各種變化。
 
如同詠春拳,三個套路,
排列組合、變化萬千
 
 
 
 
 
 
與其到處  Copy範例、到處抄襲程式碼(找到了也改不動)
 
為什麼不一次學好、學清楚?
 
然後讓自己有生產力呢?
(你學了一百招,但上了戰場,一招都使不出來?)
(客戶的要求,沒有一個你能自己做到?還是上網逐一發問、抄抄改改?)
 
 
為什麼人家可以千變萬化?
 
我只能到處拼拼湊湊?卻還天天加班、做不完?最後還是迷迷糊糊?
 
 
 
 
   如何一以貫之
         如何啟動「輕輕鬆鬆的自我學習之道」?
 
 
讓我告訴你,
一個沒有大型補習班招牌、沒有關鍵字廣告的書籍與課程
 
 
在時局這麼亂、經濟與工作越來越蕭條的  Bumbler 無能年代
 
為何所有補習班的 ASP.NET課程都開不成、招不到學生
 
我的課程,班班額滿,欲罷不能.............縱貫這三四年 全台灣 的 ASP.NET入門教學
 
 
 
 

 
 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net



ASP.NET遠距教學、線上課程(Web Form + MVC)。 第二門 課程「四折」-- 以MVC課程 作優惠。
第一天課程, "完整" 試聽。  如不滿意  全額退費!
................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

*********************************************************************************************

*** ASP.NET MVC線上課程 第一天 免費看 (5.5小時) *** 

************************************************************(歡迎索取,免費申請)*****

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

    MIS2000 Lab.  線上教學影片(YouTube) **免費觀賞**