微軟WP7本機資料庫解決方案之Sqlite

2022-02-12 08:35:09 字數 3255 閱讀 8280

【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可以相容世界上所有字元 一 避免建立資料庫及表...