2012-02-04 93 views
0

我有一個非常複雜的問題,但如果我可以做到這一點,那麼我基本上會解決它。 基本上,我創建了一個應用程序,最初可以在iOS和Android上運行,後來可能在Blackberry和Windows Phone上運行。問題是,我將使用Dropbox來保持所有這些設備同步。我需要保存的數據需要存儲在SQLite數據庫中(理想情況下,因爲我無法在所有設備中使用Core Data,並且XML在所有平臺中都很難使用)。我將創建一個自定義對象(使用C++,或者一個結構,或者任何我需要創建的東西,只要我可以在所有平臺上完成這項工作),並且我希望能夠將原始C++對象存儲在數據庫中,之後閱讀Android中的數據(以及後來的Blackberry和WP)。在SQLite中存儲對象。可能嗎?

所以基本上,我的問題是,我可以將原始C++對象存儲在SQLite數據庫中嗎?因此能夠在Android和Windows Phone上閱讀它們?這聽起來像一個愚蠢的問題,因爲Android編程是在Java中完成的,WP是在C#中完成的,這就是我懷疑我的C++對象是否可以從數據庫中讀取而幾乎沒有問題。

回答

1

我的猜測是,它可能是像轉儲二進制數據 - 一個結構爲ie - 和答案是(BLOB數據類型)。

無論如何,如果我正在做這樣的事情,爲了簡單和便攜,我會將編碼的json存儲在文本數據庫字段中。請記住,這個選擇取決於許多事實,例如DB多久會被訪問以檢索/保存這些對象,或者有多大的對象將是,等等等等

希望這有助於

+0

是的,我認爲JSON,但我不能完全肯定是否會滿足我的需求。想想聯繫人數據庫,這與我的數據需要被訪問和存儲的頻率一樣。 – 2012-02-04 01:30:19

1

聽起來好像這裏有兩個問題,我可以回答第一個問題,但我不太確定第二個問題。你的第一個問題是,你可以將一個編譯好的C++對象存儲到SQlite中,答案是肯定的。 SQLite有一個BLOB數據類型,您可以在其中存儲二進制對象,並且不會嘗試對它們進行任何驗證,它只會存儲並返回它們,但會獲取它們(根本不驗證)。這完全與你正在編程的語言無關,因爲Java和C#不需要知道或關心這些對象中的內容。

至於我解釋你的第二個問題是,我可以執行這些二進制對象,我的傾向是說不。我認爲,至少在Android中,沒有任何機制可以在您將其從SQLite中移出後執行這些二進制對象。 NDK可以讓你編譯和構建本地代碼,但是我不知道動態加載本地對象的方法。特別是因爲你必須編譯它爲您的所有預期目標

希望它能幫助, 大衛

相關問題