顯示具有 資料庫 標籤的文章。 顯示所有文章
顯示具有 資料庫 標籤的文章。 顯示所有文章

2025年1月4日 星期六

[轉職]換工作 程式設計師? 免費4小時實戰課程 看自己適不適合? (Web後端)

https://youtu.be/MIELLPMnw2Y

我想換工作,轉職為"程式設計",但不知道自己是否合適? 這影片有4小時的實戰教學,親自動手跟著做,看看自己能否跟上? 能否接受這樣的工作? 學員感言與推薦 - www.dotblogs.com.tw/mis2000lab/2023/01/30/mis2000lab_MVC_onlineLearning2023
直接來信跟我買 : 1. 價格最便宜(因為沒有別人抽成) 2. 內容最多、更新最快(外面平台只能賣得動 入門課、進階的沒上架) 3. 一年內,MVC新增內容,第一時間通知您 "免費"觀賞 完整課程 超過 140小時(外面買不到) 已開始販售,請來信詢問,保證最低價(直接跟我買,限時優惠六折) mis2000lab (at) yahoo.com.tw; school (at) mis2000lab.net。謝謝您 [ASP .NET Core 6.0~8.0/9.0 MVC]第一天 免費課程 3小時完整試聽 https://youtu.be/TSmwpT-Bx4I 。
[ASP.NET MVC 5 / .NET 4.x版] 第一天完整影片(5.5小時)免費試聽 https://youtu.be/9spaHik87-A 。 課程大綱,請看 https://www.dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab 課程上架 - 9vs1 .com 網站的 ASP .NET 8.0 / 9.0 MVC 三天入門課程 www.9vs1.com/go/?i=57ktp8xdj5ph 課程大綱 詳見 mis2000lab.pixnet.net/blog/post/35141956 。

這位學員學了半年,公司幫他加薪150%(真人真事) - www.dotblogs.com.tw/mis2000lab/2020/09/23/ASPnet_MVC_online_20200923

2018年10月8日 星期一

ASP.NET MVC,檔案上傳搭配資料庫(FileUpload 檔案二進位存入資料表)

這個範例源自微軟ASP.NET MVC認證考試的教材 -- https://github.com/MicrosoftLearning/20486-DevelopingASPNETMVCWebApplications
FileUpload檔案上傳時,如果要把圖片(二進位內容)存入資料表
資料表的欄位「資料型態」請設定為 Image (舊版本在用的)或 VarBinary(MAX)

(1)  轉成類別檔以後,會變成

public byte[] PhotoFile { get; set; }



(2) 上傳以後,存入(寫入、新增)資料表的寫法:

        [HttpPost]
        public ActionResult Create(Photo photo, HttpPostedFileBase image)
        {   //                                                           ****************************
            if (ModelState.IsValid)
            {   //*** 檔案上傳 ****************************************(start)
                if (image != null)   {
                    photo.PhotoFile = new byte[image.ContentLength];
                    image.InputStream.Read(photo.PhotoFile, 0, image.ContentLength);

                }
                //*** 檔案上傳 ****************************************(end)
                _db.Photos.Add(photo);   // 新增一筆記錄
                _db.SaveChanges();   // 正式寫入資料庫!

                return RedirectToAction("Index");
            }
            return View(photo);
        }




(3) 從資料表裡面「讀取」這些二進位的檔案,並還原成圖片

        public ActionResult Index()
        {
            return View("Index", _db.Photos.ToList());
        }
        //*** 把資料表裡面的「二進位」內容,還原成圖片檔 ****************************
        public FileContentResult GetImage(int PhotoID)
        {
            Photo requestedPhoto = _db.Photos.FirstOrDefault(p => p.PhotoID == PhotoID);

            if (requestedPhoto != null)   {
                return File(requestedPhoto.PhotoFile, "image/jpeg");
            }
            else   {
                return null;
            }
        }



(4) 容易犯錯的地方在於「檢視畫面(View)」,
    我們採用 List範本,列出所有照片

    @foreach (var item in Model) {

            @if (item.PhotoFile != null) {
                @
Url.Action("GetImage 動作", "控制器名稱", new { item.PhotoID })" />               
            }
     
    }



ASP.NET MVC 第一天 5.5小時 完整教學影片,免費觀賞
請看  http://mis2000lab.pixnet.net/blog/post/35141956




第一天,5.5小時的影片(完整內容),免費讓您評估
不用客氣。
註冊完 https://vimeo.com/ 的會員(免費帳號),就寫信跟我登記吧!

請把下圖的資訊,告訴我!
一律透過 E-Mail報名。謝謝您     mis2000lab (at) yahoo.com.tw  或是  school (at) mis2000lab.net

Vimeo_05.jpg​




2017年1月9日 星期一

19/30 ADO.NET與資料庫 #2 -- ADO.NET程式 DataReader為何不能分頁?

從上一篇文章起( http://mis2000lab.blogspot.com/2017/01/1830-adonet-1-adonet.html)
我們開始自己寫程式 作資料存取
DataSet / DataReader兩者的差異,可以參閱這篇文章
** 初探ADO.NET #2,DataReader 與 DataSet(資料集)**
https://dotblogs.com.tw/mis2000lab/archive/2008/08/15/4919.aspx
ADO.NET程式 DataReader為何不能分頁?
這句話是什麼意思?
「從資料來源讀取「順向」且「唯讀」的資料流」,有範例示範一下,為我說明嗎?

後續的範例也會跟各位介紹 「DataReader + 自己寫SQL指令做分頁」
  1. 當我們要查詢數據時,如果數據量太大,要自己寫SQL指令做 "分頁" 呈現。
    您在Google查到一千筆數據,Google也是分成一頁一頁的呈現吧?
  2. 畫面的呈現,可以透過GridView、Repeater(這東西 "預設"不提供分頁功能)來呈現,但分頁功能則是我們自己寫的。或是透過 DataReader來呈現每一頁的數據。
這些範例在後續都會為您介紹。
順便也分享一篇文章。
如果您對於DataReader / DataSet想進一步瞭解,我收集了許多前輩的經驗談
[ADO.NET] Web Form為求快速,可使用 DataReader直接處理資料來源
https://dotblogs.com.tw/mis2000lab/2012/01/13/dataset_datareader_20120113
下一篇文章,讓我們開始動手寫程式--
ADO.NET與資料庫 #3 -- 跨平台(Web + Windows)的程式與範例

18/30 ADO.NET與資料庫 #1 -- ADO.NET程式的四大步驟

今天開始,我們試著「自己寫程式」做資料庫的存取。
上一篇文章  http://mis2000lab.blogspot.com/2017/01/1730-9-optimistic-concurrency.html
ADO.NET程式的四大步驟--以DataReader為例。
並且用SqlDataSource簡單說明ADO.NET底下兩名大將--DataReader & DataSet。
今天的 Youtube影片 https://youtu.be/zeXgLVqSy50

如果您需要一些文章、範例來參考,請看
初探ADO.NET #1,程式與資料庫互動的四大步驟
https://dotblogs.com.tw/mis2000lab/2008/08/15/4918
初探ADO.NET #2,DataReader 與 DataSet(資料集)
https://dotblogs.com.tw/mis2000lab/archive/2008/08/15/4919.aspx
下一篇文章
ADO.NET與資料庫 #2 -- ADO.NET程式 DataReader為何不能分頁?
http://mis2000lab.blogspot.com/2017/01/1930-adonet-2-adonet-datareader.html 


15/30 網頁與資料庫#7 -- 我的 GridView有 "新增"功能

上一篇文章( http://mis2000lab.blogspot.com/2017/01/1330-5-calendardatabinding.html )提到:
當我們練習多個ASP.NET控制項、SqlDataSource的互動。
您可知道這些精靈組合出來的東西,有不少漏洞與缺失?
該怎麼處理?考驗您(初學者)對ASP.NET觀念是否熟悉?
尤其是「DataBinding的時機」
==========================================
如果您可以控制 大型控制項 「DataBinding的時機」
那麼您可以進行下一個範例「我的 GridView有 "新增"功能」
透過控制 GridView的資料來源:
  1. "有"資料的時候,就呈現資料。一般的 GridView外觀。
    例如 GridView1.DataSourceID = "SqlDataSource1"
    或是
    GridView1.DataSource = ds(註:自己寫程式 DataSet or DataTable等)
    GridView1.DataBind()
  2. "沒有" 資料時,就呈現GridView「空白樣版 EmptyDataTemplate」。
    裡面事先加入 DetailsView的「新增」便可完成
    例如
    C#語法的GridView1.DataSourceID = null
    VB語法的GridView1.DataSourceID = Nothing
今天的 YouTube影片: https://youtu.be/86u63WJrZ34

============================================
推薦微軟MVP -- KK Bruce老師的文章,寫得非常詳細喔
GridView「新增」功能 破解 完整攻略
kkbruce.blogspot.com/2010/04/gridview.html
GridView新增功能 圖文篇
kkbruce.blogspot.com/2010/07/gridview.html
好的,我們的下一篇文章將會分享
如果畫面上「不使用」大型控制項?例如:不使用 DetailsView控制項
完全用「基礎」的Web控制項來設計畫面,能否(盡量)不寫程式也做到資料新增??
詳見下一篇文章 http://mis2000lab.blogspot.com/2017/01/1630-8-html.html 

14/30 網頁與資料庫#6 -- SqlDataSource做不到、做不好的地方

雖然前面的文章 (http://mis2000lab.blogspot.com/2017/01/1330-5-calendardatabinding.html)
提到 SqlDataSource加上大型控制項(資料繫結控制項)可以做出不少變化
但還是有些隱藏的缺失
也因為有這些缺失,所以自己寫程式來處理,可以做得比「精靈」更好
今天與您分享的就是:SqlDataSource做不到、做不好的地方
Youtube影片:https://youtu.be/P7AKhH-9YrE

當我們練習多個ASP.NET控制項、SqlDataSource的互動。
您可知道這些精靈組合出來的東西,有不少漏洞與缺失?
該怎麼處理?考驗您(初學者)對ASP.NET觀念是否熟悉?
尤其是「DataBinding的時機」
==========================================
如果您可以控制 大型控制項 「DataBinding的時機」
那麼您可以進行下一個範例「我的 GridView有 "新增"功能」
透過控制 GridView的資料來源:
  1. "有"資料的時候,就呈現資料。一般的 GridView外觀。
  2. "沒有" 資料時,就呈現GridView「空白樣版 EmptyDataTemplate」。
    裡面事先加入 DetailsView的「新增」便可完成
請看下一篇文章

2016年12月27日 星期二

撈(展現、查詢)資料時,資料表欄位是「Null」值的處理 -- DBnull / DBNull.Value / IsDBNull()方法

資料庫的某一個欄位,裡面是「Null」值的時候,ASP.NET無法把這樣的 Null值,呈現在畫面上。 
因為ASP.NET不會自動把Null值轉換成一般的字串(String),因此會出現錯誤訊息。




VB語法如下:
特別注意!!
有時候,資料庫的某一個欄位,裡面是「Null」值的時候,ASP.NET無法把這樣的 Null值,呈現在畫面上。因為ASP.NET不會自動把Null值轉換成一般的字串(String),因此會出現錯誤訊息。……關於Null的定義,請參考資料庫的相關書籍。
例如:資料庫裡面,有個欄位test123的值剛剛好是「Null」。
那麼,我們想要把這個欄位呈現在網頁上,下面這行程式碼一定會出錯!
<% Response.Write(dr.Item(“資料表的欄位名稱”)) %>
為了避免這種例外錯誤的產生,在後置程式碼(Code Behind)裡面,我們必須要一個IF判別式來防堵:
IF Not dr.Item(“資料表的欄位名稱”) Is DBNull.Value Then
     ‘--註解:如果 test123欄位的值,不是「Null」的話,才會執行這區。
     Response.Write(dr.Item(“資料表的欄位名稱”))
End IF


相關寫法:Convert.IsDBNull 方法
Convert.IsDBNull( dr("欄位名稱") )    若使用C# 請改成 dr["欄位名稱"]
  
 VB -- DBNull.Value.Equals(value) 
C# -- DBNull.Value.Equals(value)

如果是 C#語法,請使用
if (! DBNull.Value.Equals(dr[“資料表的欄位名稱”]))
{
}  
--------------------------------------------------------------------------------
 如果是用資料繫結運算式,寫在HTML裡面(.aspx檔),請用下列作法:
Convert.IsDBNull(Eval("column"))

或是

Eval("Column").Equals(System.Data.DbNull)
  
相關文章請看:
摘錄: 資料庫的 NULL 值是一個標記,標示說資料庫目前這個欄位是空的,它的本質和空字串也不同,所以用 string.IsNullOrEmpty(myField.Value) 是無法判斷它是否為 NULL 值的,這也就是為什麼 DataRow 要提供一個 IsNull() 方法,而 DataReader 要多一個 IsDBNull() 的方法,就是因為 NULL 值的獨特性。

我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net
................   facebook社團   https://www.facebook.com/mis2000lab   ......................
................   Google+   https://plus.google.com/100202398389206570368/posts ........
................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

2015年7月30日 星期四

ASP.NET 遠距教學 / 面對面授課 -- ASP.NET入門實戰 + ADO.NET進階 (七週) -- MIS2000 Lab親自授課


[遠距教學,在家上課] 週六班, ASP.NET入門實戰 + ADO.NET進階【二合一,七天課程】

http://www.dotblogs.com.tw/mis2000lab/archive/2015/06/04/aspnet_adonet_learning_studyathome.aspx



***確定開班***  ASP.NET 遠距教學,免出門,在家上課   上課時,老師 親自 線上講解!並非事先錄影!
      

2015/9/12(週六)~ 11/7 的七週課程    確定開班 
(中秋、國慶,兩次連續假期都停課)
ASP.NET入門實戰 + ADO.NET進階班(七週)
學員們只需在家,有一台上網的電腦,搭配耳機或是麥克風就能上網學習
我會提供合法的軟體,讓各位免費使用。
免出門,在家上課。   時間到了,您上網就能參與課程。我(老師)親自講課!
當然,遠距教學的好處,就是 課後有「錄影」可以反覆學習。
對於外縣市、國外的朋友來說,應該省下不少高鐵(交通)費用、省下通勤時間。
上課時,老師 親自 線上講解!  並非 事先錄影!
上課時,我(老師)也會上線、人在現場,
您(學員)只要在家裡上網就能聽課。   師生雙方可以互動發問、討論
這門課有七次(七天課程,每週假日),
省下現場上課時,等待大家實作的時間,每天的課程時間也會比較節省
依照我的經驗,實體上課 7hr/天,遠距教學大約是 5hr/天
當然!一定會把每天的課題講完,才會下課。
上課時,一樣可以與我發問與討論。
現場不會做,老師可以看到(分享)您的桌面,互動沒問題!
其餘的相關事項,跟「實體教學」一樣。
    確定開班     確定開班     確定開班     確定開班     確定開班     確定開班     確定開班     確定開班 
比較特別的是:
** 遠距教學,五人即可開班。(幾乎就是保證開班的意思  :-P ) 但每班上限只有20人。
** 遠距教學,中途退費者,需扣一千元的軟體授權費。
** 這一班可以 "免費"重聽(線上重播 "本次上課的"錄影檔),限期為「課後的四個月內(120天)」。
  (但實際上,我希望、也願意給您更長的重聽服務。  學員想看就來信....放心!好學員,我會盡量幫您
      不過還是作一個規範,以免以後有人來鬧,服務沒有設定「時限」,擔心日後吵不完)
上我的課,不 需要「預習」。
本課程 "不" 送書
** 要您買書來評估,是要您先看看這本書、這門課有多豐富!也看看上課內容。
    不是 要您買來先「預習」。
** 對照一下各大補習班,ASP.NET (Web Form)的課程,我最豐富!我最便宜!CP值最高
** 哪個課程能作到?  老師先把內容先寫成書本?讓您事先評估呢?.......這樣的課程有保障!
** YouTube我也放了教學影片(片段)給您評估,所以需要「試聽」的話,請看 MIS2000 Lab. 位於 YouTube的線上教學影片
    確定開班     確定開班     確定開班     確定開班     確定開班     確定開班     確定開班     確定開班 
如何報名:
第一,認真看完下面的文章,包含超連結的內容(ex:自我評估、課程大綱)
第二,填寫報名表,並且 E-Mail給我。謝謝。
      相關資料,下面文章都會講,請耐心看完(確保您的權益)
      如果您不願意耐心看文件,我相信您不適合進入「寫程式」這個行業,請三思!

[遠距教學,在家上課] 週六班, ASP.NET入門實戰 + ADO.NET進階【二合一,七天課程】

http://www.dotblogs.com.tw/mis2000lab/archive/2015/06/04/aspnet_adonet_learning_studyathome.aspx

2015年4月17日 星期五

[讀書心得]資料分頁的最佳化,以SQL 2012的 OFFSET-FETCH為例

MIS2000 Lab.文章備份(原文出自)

[讀書心得]資料分頁的最佳化,以SQL 2012的 OFFSET-FETCH為例

http://www.dotblogs.com.tw/mis2000lab/archive/2015/04/10/sql_querying_paging_offset-fetch.aspx


這篇文章源自微軟出版社(Microsoft Press)
2015年的新書 -- T-SQL Querying

T-SQL Querying
  • Published 3/6/2015
  • 1st Edition
  • 864 pages
  • Book 978-0-7356-8504-8
  • eBook 978-0-13-398664-8



微軟網站已經公開了 這一章 的全文,請看


第二頁裡面 介紹資料庫分頁的SQL指令,
包含 TOP、ROW_NUMBER(SQL 2005 起可用)、OFFSET-FETCH(SQL 2012 起可用)

因為我們公司都改成SQL 2012版了,所以我只摘錄 OFFSET-FETCH的部分

====================================================================
SQL 2012起 多了OFFSET-FETCH的作法,
比起上述的TOP、ROW_NUMBER更簡單而且更強。
底下是一般的作法(尚未最佳化),跟前面章節的範例雷同:
-- 註解:改良後的預存程序(尚未最佳化)。
CREATE PROC dbo.GetPage5
  @pagenum  AS BIGINT = 1,
  @pagesize  AS BIGINT = 25
AS
SELECT orderid, orderdate, custid, empid
FROM dbo.Orders
ORDER BY orderid
OFFSET (@pagenum - 1) * @pagesize ROWS FETCH NEXT @pagesize ROWS ONLY;
GO
-- 註解:執行這一段預存程序。
EXEC dbo.GetPage5 @pagenum = 1, @pagesize = 25;
EXEC dbo.GetPage5 @pagenum = 2, @pagesize = 25;
EXEC dbo.GetPage5 @pagenum = 3, @pagesize = 25;
下圖是簡單的解說,讓您瞭解 OFFSET-FECTCH的用法
我們可以進一步修正如下,讓搜尋的效能更好。
根據微軟出版書籍所做的測試,在您閱覽第一千頁的資料時,下面的寫法只需邏輯讀取241次,
而上述的寫法卻要76,644次,效能大幅提昇了。
-- 註解:改良後的預存程序(最佳化)。
CREATE PROC dbo.GetPage6
  @pagenum  AS BIGINT = 1,
  @pagesize  AS BIGINT = 25
AS
WITH K AS   -- Define a table expression based on this query (call it K, for keys).
(
  SELECT orderid
  FROM dbo.Orders
  ORDER BY orderid
  OFFSET (@pagenum - 1) * @pagesize ROWS FETCH NEXT @pagesize ROWS ONLY
)
SELECT O.orderid, O.orderdate, O.custid, O.empid
FROM dbo.Orders AS O
  INNER JOIN K
    ON O.orderid = K.orderid
ORDER BY O.orderid;
GO
-- 註解:執行這一段預存程序。
EXEC dbo.GetPage6 @pagenum = 3, @pagesize = 25;

====================================================================
如果您想進一步瞭解裡面的原理
就直接看微軟公開的這一章吧,
共有六頁,寫得很詳盡!
本站已發表的相關文章 -- 

Model Binding入門、簡介、初試身手 #2 -- Web Form分頁與 IQueryable (不使用EF)



ASP.NET課程 / ASP.NET教學,請看
    http://www.dotblogs.com.tw/mis2000lab/archive/2011/06/24/29807.aspx

    [台北] ASP.NET入門實戰 + ADO.NET進階【二合一】49 hr


ASP.NET影片、遠距教學,請看:
    http://www.dotblogs.com.tw/mis2000lab/archive/2015/03/09/aspnet-online-learning-distance-education-2015.aspx

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