今天要來講 PC 和 PPC 的 SQL Server 的差異性比較
PPC 則是使用 System.Data.SqlServerCe (需安裝 .NET Compact Framework
再來是要了解一點
PPC上所支援的 API 較 PC 少 (為了縮減容量的關係吧?)
PPC上所支援的 API 較 PC 少 (為了縮減容量的關係吧?)
所以常常可以見到的是
同一個 Class 上 在 PPC 所支援的方法及屬性 大多會所剩無幾
在 MSDN 上查詢Class成員時
會看到某些 方法 或 屬性 前有個手機的 Icon 那就表示是支援 PPC 開發
以上大概是 PC 和 PPC 的一些小講解
再來是 PPC 上用的小型許多的 SqlServer -- SqlCe
如同之前所講的 PPC 許多 Class 都會受限
但是坎尼沒想到 SqlCe 上也有如此情況!?
比方講 isnull 這個在Sql常用的函式 到了SqlCe上竟然不在了 囧>
應該是說 它變成回傳 true/false ( 但MSDN上是寫不支援
坎尼只好用 case when 來做判斷
接下來是要承接 上篇 所講的SqlParameter
在 .NET Compact Framework 上寫入 SqlParamter 就不像上篇所講的那麼簡單
因為 SqlCe 會判斷目前 Sql 句子裡有幾個 Parameters
然後再將 SqlCeCommand 裡的 Parameters 的值給寫入 少傳多傳都會出現例外
講這麼多就是一句話 :
子句的參數數目要和 SqlCeParameters 的數量相同啦!!!
因此坎尼 上篇 所介紹的這個傳入參數的方式就不適用
但是偏偏這個 PPC 的開發和上一篇所講的是同一個案子
坎尼打開 SqlCe 的資料庫 又看到了許多重覆的欄位分散在不同的資料表中 orz
山不轉 坎尼轉轉轉 綜合之前所提的兩種方式
坎尼將共同的 SqlParameter 寫於外層
內層的判斷則是依不同需求 傳入所需的 Parameter
可以看到 範例中只有 id 是共通 所以移到最外層
name 雖然也有兩個情況下會出現 但是..恩..很抱歉...你知道的...
(坎尼案子裡共同的parameter約有七八個 orz
傳入 Parameter的方法大概介紹到這邊
最後回應一下 Tim 上篇留言所說的
這個方式雖然可以分開管理共同及私用的 Parameters
但還是 Tim 所說的 直接再開個方法來寫 還比較好維護
這個四不像希望以後坎尼負責的案子不會再用到它
(那你幹嘛發明它 找死啊= =
這篇實在是寫得很亂 很感謝能看到這裡的人 <(_ _)>
下篇會挑個 scope 比較小的東西來寫
1 則留言:
在 SqlCe 這種非常重視節省運算資源的環境果然就不能亂塞參數了 XD 其實本來就應該看到底 SqlCommand 需要多少參數就塞多少參數的 ... 對 DB 的操作本來就很麻煩,如果要減少手動撰寫的程式碼的量,應該要靠 CodeSmith 這類的 tool 來達成吧~~
張貼留言