2013-07-24 110 views
1

我在我的應用程序中使用sqlite數據庫與sqlite.net DLL。 命名空間是Finisar.sqlite 我在使用事務插入條目到數據庫時遇到問題,它在打開連接時拋出異常爲「無法打開數據庫文件」。無法在sqlite中打開數據庫文件(使用finisar.sqlite)

我谷歌它,但解決方案就像改變連接字符串。如果我遵循這個過程,那麼finisar會給我作爲無效參數的例外。

SQLiteConnection db = new SQLiteConnection(f_strConnStr); 

db.Open(); 

**Valid parameters are:** 

Data Source=<database file> (required) 

Version=<version of SQLite (2 or 3)>   (default: 2) 

New=True|False     (default: False) 

Compress=True|False     (default: False) 

UTF8Encoding=True|False    (default: False) 

UTF16Encoding=True|False   (default: False) 

Cache Size=<N>     (default: 2000) 

Synchronous=Full|Normal|Off    (default: Normal) 

DateTimeFormat=ISO8601|Ticks|CurrentCulture  (default: ISO8601) 

Compatibility=[old-date-format][,old-binary-format] (default: None) 

我試着像池連接字符串,雜誌= OFF等,但沒有爲我工作的解決方案。即使我無法創建由於參數無效而受密碼保護的文件。

我不能添加比這個參數。 如果有人有解決這個問題,請幫助我們。

在此先感謝。

+1

什麼是*** ***確切異常文本? –

+0

「無法打開數據庫文件」這是我從Exception.message獲得的信息 如果您需要更多信息,我會給您 – Pratik

+0

您可以在另一個可打開SQLite數據庫的程序中打開它嗎?像Firefox插件一樣。 – Pixelmonster

回答

3

所以很多事情可能出錯怎麼回事:

  1. 的文件夾中的SQLite數據庫中,你沒有權限。
  2. 該數據庫已被另一個SQLiteConnection打開。
  3. 連接字符串錯誤。我認爲這不太可能,因爲它顯然是一個你從中拉取連接字符串的變量,我不得不相信其他時候你需要使用相同字符串的數據。

爲了彌補#2你應該總是訪問您的數據是這樣的:

using (SQLiteConnection c = new SQLiteConnection(f_strConnStr)) 
{ 
    c.Open(); 
    ... 
} 
+0

連接字符串是 Data Source = FilePath; Version = 3; New = false; Compress = True; – Pratik

+0

@Pratik,正如我在#3中所述,我懷疑連接字符串是你的問題。而且這不可能**不**擁有**寫入權限。最有可能的是一個'SQLiteConnection'對象,因爲沒有正確使用它而沒有正確處理。確保你連接(正如我指出的那樣),並在*使用'語句在*在任何時間。* –

+0

有沒有什麼辦法知道天氣sqlite連接已經打開使用另一個線程或進程? – Pratik

相關問題