2015年12月23日 星期三

使用ExecuteReader與DataTable速度比較

            StringBuilder sb = new StringBuilder();
            var testNo = 100;
            MySqlConnection conn = MysqlFactory.GetConnection();
            DateTime curr = DateTime.Now;
            string sql = "SELECT merno1,mername,price,ezdesc FROM shmeritem";
            for (var i = 0; i < testNo; i++)
            {                
                try
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
                    List list = new List();
                    var dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        list.Add(new MernoDetailValue()
                        {
                            Merno1 = dr.GetString("merno1"),
                            MerName = dr.GetString("mername"),
                            Price = dr.GetDecimal("price"),
                            EzDesc = dr.GetString("ezdesc")
                        });
                    }
                }
                finally { conn.Close(); }
            }
            sb.AppendFormat("{0}s\n", (DateTime.Now - curr).TotalSeconds);

            curr = DateTime.Now;
            for (var i = 0; i < testNo; i++)
            {
                try
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
                    DataTable dt = new DataTable();                                    
                        MySqlDataAdapter mda = null;
                        mda = new MySqlDataAdapter(cmd);
                        mda.Fill(dt);                    
                }
                finally { conn.Close(); }
            }
            sb.AppendFormat("{0}s\n", (DateTime.Now - curr).TotalSeconds);
結果
37.1417164s
37.6632826s
ExecuteReader略快一點

2015年12月15日 星期二

ASP.NET 5 的快取類別

在ASP.NET 5 很多都用依賴注入,連快取也是,但目前還不太熟
而且用依賴注入在每個Controller的建購子還要在宣告,覺的有點麻煩
只好先把快取先放入靜態類別來直接使用

2015年12月14日 星期一

ASP.NET 5 讀取設定檔

以往舊的Web.config不見了,要用以下方式 新增ASP.NET 組態檔


2015年12月10日 星期四

Delphi XE8 TFDMemTable的複製

Delphi XE8 內鍵了FireDAC,裡面有一個組件是 TFDMemTable
用起來和TClientDataSet中不多

如果要複製資料到另一個FDMemTable可以用
 
function TForm1.CopyFD(mt: TFDMemTable): TFDMemTable;
begin
  Result := TFDMemTable.Create(nil);
  Result.Data := mt.Data;
end;
相當的簡單

2015年12月9日 星期三

ASP.NET 5/MVC 6 自訂使用Claim驗証

在ASP.NET 5 如果不想用落落長又複雜的 Identity 有另一個簡單的方式

ASP.NET 5 小地雷:新增 Scaffold 項目不見

在VS2015使用ASP.NET 5 RC1發現沒有 新增Controller對話框了



2012年3月3日 星期六

MyDac 5.x 修正ftMemo為空時,變成Null

最近準備升級Mysql 4.x -> 5.5
不小發現元件的一個bug,在Memo型態空值時,變會成null
造成5.5 update會跳出 can not be null
簡單的修正方式如下

DBAccess.pas
3375 行
function TDAParam.GetIsNull: boolean;
begin
  if IsBlobDataType then begin
  if DataType in [ftMemo, ftWideMemo] then Result := false
  else Result := TBlob(FParamObject).Size = 0;//原code是只要size為0就是null
  end else
   Result := inherited IsNull;
end;