顯示具有 VS 2017 標籤的文章。 顯示所有文章
顯示具有 VS 2017 標籤的文章。 顯示所有文章

2018年4月16日 星期一

[習題]上集 Ch 14-4 撰寫ADO.NET DataReader的分頁程式#3(搭配SQL 2012指令 OFFSET...FETCH)

摘要:[習題]上集 Ch 14-4 撰寫ADO.NET DataReader的分頁程式#3(搭配SQL 2012指令 OFFSET...FETCH)

速度比起 ROW_Number差不多,
但比較起來,新的寫法比 ROW_Number省資源





上一篇文章,也是透過SQL指令來進行資料分頁
遠比在「HTML畫面上」寫程式分頁快速多了!!

今天看書時,發現一個新的指令
SQL 2012起,多了 OFFSET...FETCH的指令來輔助  Order By,也可以做資料分頁喔。
教學影片  https://www.youtube.com/watch?v=37q5qez6cbU

如果您是撰寫 ASP.NET MVC,分頁的原理其實雷同。
請參閱  http://mis2000lab.pixnet.net/blog/post/35057473
或是  https://mis2000lab.blogspot.tw/2018/04/aspnet-mvcskip-take.html




當然,您跟我一樣,花十分鐘看一下SQL Server大師  --德瑞克的網站就會了

啊!!!!!!!!德瑞克大師的功力灌頂之後,
 我馬上把我的分頁程式改成這樣
只花了兩分鐘!!!!!(因為我資質弩鈍,花了一點時間練習)
  
請打開書本,或是參閱以前的範例
把SQL指令改成這樣
        //========================
        //== 組合SQL指令 =============
        SqlDataReader dr = null;

//== ADO.NET 參數的寫法 ==
String SqlStr = "Select test_time, id, title, summary from test Order By id 

OFFSET @Page1 ROWS FETCH NEXT @Page2 ROWS ONLY";

        SqlCommand cmd1 = new SqlCommand(SqlStr, Conn);
        cmd1.Parameters.AddWithValue("@Page1", NowPageCount);
        cmd1.Parameters.AddWithValue("@Page2", PageSize);


        dr = cmd1.ExecuteReader();
        //== 第三,自由發揮 ======================
        while (dr.Read())
        {
            haveRec = true;   // 後續省略......
 完成了!YA!!


如果我的說法沒錯的話,這是我「個人」整理出來的重點:
OFFSET X ROWS   代表你忽略了前面幾筆記錄(也就是從這裡  開始讀取,從頭開始算起,第一筆的編號請用「零」代表 )
FETCH NEXT Y ROWS ONLY  代表你從「第幾列」向後 讀取 (我 只要 這幾列的記錄即可!)
  
根據 SQL Server大師  --德瑞克 文章裡面的說法
--  速度比起 ROW_Number差不多,
--  但比較起來,新的寫法比 ROW_Number省資源

  
這裡是微軟 msdn網站的說明(中文) -- http://technet.microsoft.com/zh-tw/library/gg699618(v=sql.110).aspx
使用 OFFSET - FETCH 的限制
  • ORDER BY 會強制使用 OFFSET 和 FETCH 子句。
  • OFFSET 子句則強制搭配 FETCH 使用。您絕對不可以使用 ORDER BY … FETCH。
  • TOP 不可以在相同查詢運算式中與 OFFSET 和 FETCH 結合。
  • OFFSET/FETCH 資料列計數運算式可以是任何將傳回整數值的算術、常數或參數運算式。資料列計數運算式不支援純量子查詢。
  
下列範例示範 OFFSET-FETCH 子句搭配 ORDER BY 的使用方式。
範例 1:略過已排序之結果集的前 10 個資料列,並傳回其餘資料列。 
SELECT * FROM [test] ORDER BY id     OFFSET 10 ROWS;

 範例 2:略過已排序之結果集的前 5 個資料列,並傳回接下來的 5 個資料列 
SELECT * FROM [test] ORDER BY id 
           OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;  
執行成果如下圖


如果您是撰寫 ASP.NET MVC,分頁的原理其實雷同。

請參閱  http://mis2000lab.pixnet.net/blog/post/35057473
或是  https://mis2000lab.blogspot.tw/2018/04/aspnet-mvcskip-take.html


相關文章:

http://mis2000lab.pixnet.net/blog/post/33836306

2017年3月17日 星期五

VS 2017上市不到一個月,又要Update ?

根據官方網站的消息(https://blogs.msdn.microsoft.com/visualstudio/2017/03/16/visual-studio-2017-update-preview/

VS 2017上市不到一個月,又要Update ?

sxslogo


2017/3/7 (build 26304.00)是 VS 2017 正式上市的版本

2017/3/16 (build 26315.00) 則是本次更新的版本,目前是預覽版 (Preview)

這次更新的範圍是:
1.  Team Explorer standalone install
2.  Tools for Universal Windows App Development
完整說明可以參考 Release Notes
詳見  https://www.visualstudio.com/en-us/news/releasenotes/vs2017-preview-relnotes


如果您對於這些 Preview版本有興趣,網站上有特別提醒您 --

This release is not "go-live" and not intended for use on production computers or for creating production code.



喜歡預覽版(嚐鮮、搶快)的朋友可以到此下載:
https://www.visualstudio.com/zh-hant/vs/preview/

上方的圖片(兩個 Visual Studio圖示)表示:
Preview installs next to your stable Visual Studio IDE, allowing you to use either independently
Preview 會在您穩定的 Visual Studio IDE 之後安裝,如此您就能個別使用這兩項產品。




2017年3月8日 星期三

[VS 2017的改變] ASP.NET Core 1.1 & ADO.NET


之前發表過的文章 -- ASP.NET Core & ADO.NET
在今天VS 2017上市以後 (2017/3/8) 全都掰掰了、全都不會動。

首先面臨的問題,就是 Project.json不見了,必須改由「專案名稱.csproj」來做設定
另外,在VS 2015(Update 3)的工具 -- ASP.NET Core Tooling Preview也消失了。原廠說法是「內建在VS 2017裡面」不再外掛

我們先來看看做了哪些改變吧?
第一,加入 System.Data.SqlClient 命名空間。您必須透過 NuGet來加入    這裡有異動!
    請在「您的專案」按下滑鼠右鍵....





安裝完成後,會放在下圖的位置




第二,檢查一下您的「專案名稱.csproj」檔案。
    記得請在「您的專案」按下滑鼠右鍵....才能修改這個檔案。
    因為之前的 project.json設定檔在新版 ASP.NET Core & VS 2017已經掰掰了,所以這裡有異動!





第三,讀取資料庫連結字串、讀取設定檔的程式略有修改    這裡有異動!
                var configurationBuilder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
                //  讀取設定檔的內容,這裡記得要加上 System.IO命名空間
                IConfiguration config = configurationBuilder.Build();
                string connectionString = config["ConnectionStrings:DefaultConnection"];

讀取其他檔案裡面的設定值,可以參閱這篇文章
https://docs.microsoft.com/zh-tw/dotnet/articles/core/tools/project-json-to-csproj#buildoptions

2016年12月21日 星期三

C# 6.0 字串插值 (String Interpolation) 無法使用? VS 2015 & 2017 啟用 C# 6 / VB 14

C# 6.0 字串插值 (String Interpolation) 無法使用? VS 2015 & 2017 啟用 C# 6 / VB 14


C# 6.0 新的作法,字串插值 (String Interpolation) 
    我已經是 VS 2015 Update 1與 VS 2017(目前仍是RC版),理論上早就是 .NET 4.6.2 & C# 6.0
    為何使用這樣的寫法會報錯?
解決步驟如下:
    倘若您用的是「專案」,那麼上方的 Menu 功能列 則請選擇「專案」

完成後,您可以發現網站、專案底下的 bin目錄多了一個DLL檔
Web.Config設定檔 與  Packages.config 檔都有新增一些設定值(如下圖)
== VB語法如下 ==
        Dim name = "Steve"
        Response.Write($"Hello {name}!")

參考資料:  http://stackoverflow.com/questions/30832659/string-interpolation-in-a-razor-view

字串插值 (String Interpolation),可以參考這些文章的說明

想要學習 C#,微軟提供一個「從零學起」的 C# 範例網站,大推薦!!

C# 與 VB 語法互轉(轉換),強力推薦  
******************************************************************************
******************************************************************************
  
 
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----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