【it168 專稿】無論是從使用者的角度來看還是從開發人員的角度來看,windows phone 7給我們帶來眾多的新的和令人振奮的功能。與此同時,當前的windows phone 7系列也的確存在令許多使用者失望的缺憾。乙個代表性的遺憾便是,windows phone 7缺乏本地資料庫api支援—當前的windows phone 7作業系統僅提供通過xml、客戶端獨立儲存和雲儲存等幾種有限的資料訪問支援。那麼,就本地資料庫功能來說,我們真的有沒有其他的選擇了嗎?當然不是這樣。如今各種開源社團如火如荼,已經有一些開發人員和團隊一直努力在填補這一方面的空白。
請注意,儘管目前已有多個嘗試實現了windows phone 7本地資料庫支援,但最後,這些系統都需要執行於windows phone 7提供的獨立儲存基礎之上。在本系列文章中,我將向你介紹上述成員之一-sqlite client for windows phone。這是一種新的,功能強大且易於使用的windows phone 7本機資料庫解決方案,該系統公布於著名的開源**codeplex。篇幅所限,我僅介紹在windows phone 7系統中使用sqlite client for windows phone程式設計的部分技巧。
1. windows 7;
2. .net 4.0;
3. visual studio 2010;
4. windows phone developer tools rtw;
5. sqlite client for windows phone ( );
6. (推薦) sqlite-manager ( );
7. (推薦) mvvm light toolkit ( ).
一、sqlite client for windows phone簡介
大家都知道,sqlite是乙個著名的開源的嵌入式的資料庫系統,目前已經提供對於ios和android的良好支援。在此,應當讓我們感謝dan ciprian ardelean,是他帶給我們wp7版本的sqlite-c#-sqlite!最近幾個月,作者對早期的版本又進行了更新,得到乙個功能更強大和更容易使用的解決方案,改名為sqlite client for windows phone,在知名的開源**codeplex上發布,**是releases。
接下來的操作就很簡單了:重新構建原始碼工程,得到乙個程式集community.csharpsqlite.wp.dll(release版本大小是525 kb)。然後,在你的wp7 silverlight 專案中新增對該程式集的引用。最後,你便可以使用sqlite client for windows phone提供的本地資料庫支援功能了。
二、sqlite client for windows phone基礎類庫剖析
如果您以前有過任何基於sql指令碼的資料庫程式設計經驗,那麼您可以輕鬆地使用sqlite client for windows phone功能。特別值得一提的是,此工程建基於以前的c#-sqlite專案之一,通過引入幾個幫助器類(在檔案sqliteclient.cs),即sqliteexception、sqliteconnection和sqlitecommand,進一步簡化了基本的資料庫和表相關操作。
先別急,在正式使用sqlite client for windows phone之前,有必要再向您介紹另外乙個非常有用的工具,名為sqlite-manager ()。這個工具是以firefox外掛程式的方式提供的。到現在您應該明白了,絕大多數與sqlite資料庫相關的操作,例如建立sqlite資料庫、表、檢視、索引等等,都可以通過sqlite-manager輕鬆完成。
1.使用sqlite manager簡化資料庫管理
如前所述,sqlite manager是乙個firefox外掛程式,使用firefox的載入項管理器你可以很容易地獲取和安裝這個控制項。
2.乙個有用的工具類-dbhelper
如上所述,sqlite client for windows phone使用眾所周知的sql操作針對典型的資料庫操作提供了乙個高層次的封裝。因此,在silverlight for windows phone 7程式設計中為了處理sqlite資料庫操作,我們可以直接使用在檔案sqliteclient.cs中定義的物件(在源庫專案),即sqliteexception、sqliteconnection和sqlitecommand等。
雖然sqlite client for windows phone並沒有提供與獨立儲存的直接互動,但顯然增加對獨立儲存支援是必要的,這樣可以改善系統的效能。因此,我們可以進一步封裝前面提到的sqliteclient物件。為此,chris開發了乙個非常好用的實用工具類,叫做dbhelper。為了應用於我們自己的示例,我對它做了輕微的修改。完整的原始碼如下。
列表1:更新版本的工具類dbhelper
//others omitted…
using sqliteclient;
using system.linq;
using system.io.isolatedstorage;
using system.collections.generic;
using system.collections.objectmodel;
namespace wp7sqliteclient.helpers
}private void close()
}//insert operation
public
int insert(t obj, string statement) where t : new()
catch (sqliteexception ex)
}// delete operation
public void delete(string statement) where t : new()
catch (sqliteexception ex)
private static void copystream(system.io.stream input,
isolatedstoragefilestream output)
} while (readcount > 0);
input.position = temppos;}}
}順便說一句,對於上面這個幫助類我也沒有提供細緻的優化編碼。希望讀者根據您的相關工作能夠繼續進行這項工作(例如提供更好的泛型化的crud支援)並分享給廣大網友。簡言之,我主要是增加了插入和刪除方法。上面的**中最引起您注意是地方一定是方法copyfromcontenttostorage,正是借助這個方法我們實現了上述目標-建立起sqlite資料庫與獨立儲存的關係。
資料庫亂碼解決方案
oracle 資料庫亂碼解決方案 你插入資料的時候,用 轉變字串的亂碼函式 param str return public string getstr string str catch exception e 向bean裡面賦值 public void setaction string action...
資料庫死鎖解決方案
一 活鎖 如果事務t1封鎖了資料r,事務t2又請求封鎖r,於是t2等待。t3也請求封鎖r,當t1釋放了r上的封鎖之後系統首先批准了t3的請求,t2仍然等待。然後t4又請求封鎖r,當t3釋放了r上的封鎖之後系統又批准了t4的請求,t2有可能永遠等待,這就是活鎖的情形。避免活鎖的簡單方法是採用先來先服務...
資料庫亂碼解決方案
mysql會出現中文亂碼的原因不外乎下列幾點 1.server本身設定問題,例如還停留在latin1 2.table的語系設定問題 包含character與collation 3.客戶端程式 例如php 的連線語系設定問題 強烈建議使用utf8 utf8可以相容世界上所有字元 一 避免建立資料庫及表...