2013年7月1日

ajax - 在.net framework 2.0 使用 ajax


在 framework2.0 使用ajax ,要安裝 ASP.NET AJAX Extensions,
並在web.config設定,在返回的結果中,不需要帶"d",3.5以上才需要"d".

ASP.NET 2.0 AJAX Extensions 1.0 :

http://www.microsoft.com/en-us/download/details.aspx?id=883

web.config :

    <httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers>
    <compilation debug="true">
      <assemblies>
        <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>

2013年6月27日

C# - 算中文字筆劃(繁/簡)

demo.cs                                                                                                      

using Microsoft.International.Converters.PinYinConverter;

    protected void Page_Load(object sender, EventArgs e)
    {
        getTraditionalStrokeNumber();//計算繁體字
        Response.Write("<br/>");
        getSimplifiedStrokeNumber();//計算簡體字
        //也可以算繁體字,但有些字的筆劃算法會不一樣,例如草字頭的字
    }

    private void getTraditionalStrokeNumber()
    {
        StringBuilder sb = new StringBuilder();

        WordCode wc = new WordCode();
        foreach (char c in "克的筆記本")
        {
            sb.AppendFormat("{0}{1}\r\n", c, wc.GetWordCnt(c.ToString()));
        }
        Response.Write(sb.ToString());
    }

    private void getSimplifiedStrokeNumber()
    {
        StringBuilder sb = new StringBuilder();

        foreach (char c in "克的笔记本")
        {
            sb.AppendFormat("{0}{1}\r\n", c, ChineseChar.GetStrokeNumber(c));
        }
        Response.Write(sb.ToString());
    }

===============================
結果:
克7 的8 筆12 記10 本5
克7 的8 笔10 记5 本5

下載: 繁體物件  簡體物件

2013年6月24日

SQL - 檢視(view),暫存資料表(#Table),資料表變數(@Table),衍生資料表(子查詢),一般資料表(CTE)

要用哪一種,取決於使用這些方法的頻率時間長短資料筆數多寡

1.檢視(view):
http://msdn.microsoft.com/zh-tw/library/ms187956.aspx

a.生命週期 - 存在於資料庫中,可提供給所有批次或預存程序反覆使用.
b.特  點 - 如僅需使用一次則較不適合.
c.使用時機 - 用來分解大型查詢,以便用更容易閱讀的方式加以查詢.

===============================================
2.暫存資料表(#Table):
http://msdn.microsoft.com/zh-tw/library/ms174979(v=sql.105).aspx#languageReferenceRemarksToggle

a.生命週期 - 在多個批次或預存程序裡.
b.特  點 - 存在於"tempdb".
                   可建立索引(index).
                   當session 關閉時,#Table 將會自動DROP,但最好手動DROP.
c.使用時機 - 適合用在資料量大的查詢,有複雜計算時.

例:
CREATE TABLE #TempTable (
                                                        id INT,
                                                        name VARCHAR(30) 

                                                       )

INSERT INTO ...

DROP TABLE #TempTable 



SELECT * INTO #TempTable 
    FROM table 
 WHERE ...

DROP TABLE #TempTable 

===============================================
3.資料表變數(@Table):
http://msdn.microsoft.com/zh-tw/library/ms188927.aspx#code-snippet-3

a.生命週期 - 存在單次批次期間或預存程序裡.
b.特  點 - 先在記憶體運算.
c.使用時機 - 適合用在資料量少,有複雜計算時.

例:

DECLARE @TempTable TABLE (
                                                             id INT,
                                                            name VARCHAR(30) 

                                                            )
INSERT INTO ...

SELECT name 
    FROM table AS A 
   INNER JOIN @TempTable B
         ON A.id=B.id

===============================================

4.衍生資料表(子查詢):

a.生命週期 - 僅限於查詢期間.

b.特  點 - 如需使用多次可能會使得查詢更難閱讀及維護.
c.使用時機 - 同樣的查詢僅使用一次時.

例:

SELECT id 
     FROM tableA 
 WHERE name=(SELECT name 
                                   FROM tableB 
                                WHERE ... )

===============================================
5.一般資料表(CTE):
http://msdn.microsoft.com/zh-tw/library/ms175972.aspx

a.生命週期 - 僅限於查詢期間
b.特  點 - 可以減少重覆計算所耗的I/OCPU和執行時間.
                   可以自我參考(遞迴),可以在同一查詢中被參考多次.
                   需緊接在下個查詢中才能使用.
c.使用時機 - 同樣的查詢使用多次時.

例:

;WITH TableCTE(id,dataCount) AS(
            SELECT id,COUNT(id)
                FROM table 
             GROUP BY ...
)

SELECT name 
    FROM table AS A 
   INNER JOIN TableCTE  B
         ON A.id=B.id

===============================================