2010-06-14 129 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