如何从C#连接到SQLite数据库文件?

11

我正在尝试从c#应用程序连接到sqllite数据库。我以前从未使用过SQLLite。

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)

我做错了什么?

谢谢。

Nick

更新:

像建议给我的那样,我将“data source”更改为“DataSource”。现在我收到一个新错误:

更改后,我收到一个新错误:System.ArgumentException:数据源不能为空。使用:memory:打开内存数据库 at System.Data.SQLite.SQLiteConnection.Open()

还有其他建议吗?


1
尝试在连接字符串的DataSource参数中删除撇号:@"DataSource=c:\TestData\StressData.s3db" - Will Marcouiller
2个回答

13
明白了..
"data source=c:\TestData\StressData.s3db; Version=3;"

看起来'Version'属性不是可选的。有趣的是,.NET提供程序在设计器属性窗口中没有显示此属性。

4
使用 SQLiteConnectionStringBuilder 对象来构建连接字符串(而不是硬编码为字符串)可以消除大多数类似的问题(例如:参数名称不明确,拼写错误)。至于 Version 属性,我使用的 SQLite 至少不需要它。 - Paweł Bulwan

1
根据thisdata source 应该改为 DataSource

糟糕!我想你是对的。更改后,我遇到了一个新错误:System.ArgumentException: 数据源不能为空。 使用 :memory: 打开内存数据库 at System.Data.SQLite.SQLiteConnection.Open()我必须提供一个参数吗? - Nick
@Nick,我从文档中了解到这个库,应该使用参数 new SQLiteConnection("DataSource=C:\TestData\StressData.s3db")。但我不知道为什么它不起作用:\ - Brendan Long
1
实际上,它看起来应该是“数据源”。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接