2012-08-31 35 views
0

我使用「Sqlite for Windows Runtime」和sqlite-net(正如http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store-apps.aspx所述)來開發Windows 8 Metro-App。如果我想開在方案目錄的數據庫是沒有問題的:在Windows 8 Metro-App中打開外部SQLite數據庫?

var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite"); 
using (var db = new SQLite.SQLiteConnection(dbPath)) { 
    ... 
} 

但是,當我想用​​一個外部路徑是這樣的:

var dbPath = "C:\\Users\\xxxxxx\\db.sqlite"; 

然後用「無法打開時發生錯誤數據庫文件「。爲什麼?在這裏我使用的是C#,通常我使用C++,但是對於這個問題我確定沒關係;)

+0

爲什麼你會選擇使用extern Path?我的建議是使用Visual Studio來驗證您實際嘗試使用的路徑是否正確。這對你來說很少有研究,你可以花5分鐘調試代碼後很容易地解決這個問題。 –

+0

您是否允許從瀏覽器訪問此路徑?您只能訪問當前用戶的目錄...作爲「依賴用戶」的應用程序。 – neagoegab

+0

這段代碼使用'Windows.Storage.ApplicationData.Current.LocalFolder.Path'是有原因的,因爲這是Metro應用程序實際可以訪問的少數幾個位置之一。 –

回答

6

您不能在文件系統上選擇任意文件。詳情請參閱here

默認情況下,您可以訪問這些位置:

  • 應用程序的安裝目錄
  • 應用數據的位置
  • 用戶的下載文件夾

此外,您的應用程序可以訪問一些o f默認情況下連接的 設備上的文件。如果您的應用使用AutoPlay Device extension在用戶將設備( ,如相機或USB拇指驅動器)連接到其系統時自動啓動,則此選項可用。您的應用 可以訪問的文件僅限於通過 應用清單中的文件類型關聯聲明指定的特定文件類型。當然, 您也可以通過 訪問文件和文件夾可移動設備上調用文件選擇器(使用FileOpenPickerFolderPicker)和 讓用戶選擇文件和文件夾爲您的應用程序訪問。瞭解 如何使用文件選擇器中Quickstart: Accessing files with file pickers.

如果你有正確的功能聲明您還可以訪問:

的下列功能的組合是必要的。 家庭和工作網絡的能力:

PrivateNetworkClientServer

和至少一個網絡和公共網絡的能力:

InternetClient InternetClientServer

,如果適用,域憑據能力:

EnterpriseAuthentication

注意您必須將文件類型關聯添加到應用清單,以聲明您的應用可以在此位置訪問的特定文件類型。

+0

這是否回答你的問題? – mydogisbox

1

在windows metro應用程序中... 它僅支持應用程序的沙盒屬性。

所以你不能使用

var dbPath = "C:\\Users\\xxxxxx\\db.sqlite"; 

只能在本地存儲或應用商店數據安裝ü目錄。

請避免使用任何其他路徑。不起作用 。

+0

我嘗試使用FilePicker,但仍無法打開文檔庫中的SQLite文件。我不應該能夠嗎? –

+0

@ kya baat hai,完美答案:) :) –

+0

@ScottNimrod你將無法實現 –