SQLite on Windows Phone 7
SQLite是一個輕量級的、快速的、嵌入式數(shù)據(jù)庫,開源,官方主頁是http://www.sqlite.org/index.html,從誕生起就吸引了很多開發(fā)人員的關(guān)注。其擁有各大技術(shù)陣營的分支,也贏得了部分IT巨頭的青睞,是快速開發(fā)的利器。尤其在移動領(lǐng)域,SQLite的優(yōu)勢愈加明顯,Symbian、Android甚至iPhone上都可以完美的運行SQLite,但是Windows Phone 7發(fā)布時,卻缺失了對本地數(shù)據(jù)庫的支持。現(xiàn)在Windows Phone 7的最新版本是2010 April Refresh,只能使用臨時存儲區(qū)、XML或Cloud來存取數(shù)據(jù),實在讓人郁悶。前兩天SQL CE 4發(fā)布了,且支持ASP.NET,希望以后能用于Windows Phone 7吧。
雖然缺少官方支持,但是國外有人改寫了C# SQLite,使之能在Windows Phone 7上運行,可以在這里查看。(需要FQ)我測試了一下,還不錯,有點小問題。此外,CodePlex上有人發(fā)布了全部由臨時存儲區(qū)操作的Windows Phone 7 DB項目,支持No-SQL操作,挺好的,感興趣的朋友可以試試。本次我們來試試在Windows Phone 7上操作SQLite。
測試環(huán)境:
Windows Server 2008 R2 DataCenter
Visual Studio 2010 Ultimate
Windows Phone 7 Develop Tools 2010 April Refresh
C# SQLite WP
1、建立一個Silverlight for Windows Phone 的項目:
2、添加C# SQLite WP的引用:
3、放置如下控件:(由于Windows Phone 7現(xiàn)在還不支持中文,故全部用英文,請見諒)
4、測試很簡單,點擊【AddUser】按鈕后,將用戶輸入添加進數(shù)據(jù)庫:
代碼
private string _strDB = @"Test.db3";
private void fn添加用戶()
{
string msg = string.Empty;
Sqlite3.sqlite3 db = new Sqlite3.sqlite3();
int rc = Sqlite3.sqlite3_open(this._strDB, ref db);
if (rc == Sqlite3.SQLITE_OK)
{
string sql1 = @"CREATE TABLE Users
(
UserName VARCHAR(20) PRIMARY KEY,
UserPass VARCHAR(50),
Email VARCHAR(50)
)";
Sqlite3.sqlite3_exec(db, sql1, (Sqlite3.dxCallback)this.callback, null, ref msg);
string sql2 = @"INSERT INTO Users(UserName, UserPass, Email)
VALUES('" + this.txtUserName.Text + @"', '" + this.txtUserPass.Password + @"', '" + this.txtEmail.Text + @"')";
int result = Sqlite3.sqlite3_exec(db, sql2, (Sqlite3.dxCallback)this.callback, null, ref msg);
if (result == Sqlite3.SQLITE_OK)
{
System.Windows.MessageBox.Show("Success!", "Add User", MessageBoxButton.OK);
}
else
{
System.Windows.MessageBox.Show("Error!", "Add User", MessageBoxButton.OK);
}
}
}
我沒有找到用絕對路徑創(chuàng)建數(shù)據(jù)庫的方法,以及打開現(xiàn)有的數(shù)據(jù)庫的方法,若有朋友知道,請指點一下。
這里輸入密碼時有點小問題,可能由于延遲,造成密碼的字符先顯示了一下,然后才會變成“*”。
本項目僅僅為了測試,只做了最基本的非空驗證。
5、小結(jié)
盡管Windows Phone 7現(xiàn)在對本地數(shù)據(jù)庫的支持還不是很好,但是鑒于其在微軟移動戰(zhàn)略中的重要地位,等正式版發(fā)布后肯定會有所改善,可能是SQL CE 4,或者新的本地數(shù)據(jù)庫,到時也一定會有第三方解決方案的。現(xiàn)在Windows Phone 7的UI控件有點匱乏,連GridView都沒有,希望能再改善吧。本次的測試代碼很簡單,主要是SQLite中的相關(guān)操作,看看文檔示例即可以入門。SQLite的功能遠不如此,感興趣的朋友可以再深入挖掘。


浙公網(wǎng)安備 33010602011771號