2010-06-14 67 views
10

我正嘗試從c#應用程序連接到sqllite db。我從來沒有使用過SQLLite。如何從c#連接到SQLite數據庫文件?

var connectionString = @"data source='C:\TestData\StressData.s3db'"; 
      connection = new SQLiteConnection(connectionString); 
      connection.Open(); 

當我試圖打開我得到下面的異常連接:

System.NotSupportedException: The given path's format is not supported. 
    at System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath) 
    at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath) 

我在做什麼錯?

謝謝..

尼克

更新:

我改變了 '數據源' 到 '數據源' 的建議給我。現在我收到一個新的錯誤:

更改後,我得到一個新的錯誤:System.ArgumentException:數據源不能爲空。使用:內存:打開內存數據庫在System.Data.SQLite.SQLiteConnection.Open()

有更多建議嗎?

+1

嘗試刪除連接字符串中的撇號DataSource參數:'@「DataSource = c:\ TestData \ StressData.s3db」'。 – 2010-06-14 17:07:39

回答

13

明白了..

"data source=c:\TestData\StressData.s3db; Version=3;" 

看起來像 '版本' 屬性是不可選的。有趣的是,.NET提供程序不會在設計器屬性窗口中顯示此內容。

+2

使用SQLiteConnectionStringBuilder對象來構建連接字符串(而不是將其硬編碼爲字符串)可以消除大多數像這樣的問題(模糊參數姓名,拼寫錯誤)。說到Version屬性,至少我的SQLite並不需要它。 – 2013-04-22 10:09:57

1

thisdata sourceDataSource

+0

Doh!我想你是對的。更改後,我得到一個新的錯誤: System.ArgumentException:數據源不能爲空。使用:內存:打開內存數據庫 在System.Data.SQLite.SQLiteConnection.Open() 我必須提供一個參數? – Nick 2010-06-14 16:59:34

+0

@Nick,我從來沒有使用過這個,但是從文檔看來,這個參數應該是'new SQLiteConnection(「DataSource = C:\ TestData \ StressData.s3db」)'。我不知道爲什麼它不工作:\ – 2010-06-14 17:05:54

+1

實際上它看起來應該是'數據源' – Nick 2010-06-14 17:13:28