使用 vb.net 打开 sqlite“临时”数据库的确切语法是啥

Posted

技术标签:

【中文标题】使用 vb.net 打开 sqlite“临时”数据库的确切语法是啥【英文标题】:what is the exact sytax to open sqlite "Temporary" database using vb.net使用 vb.net 打开 sqlite“临时”数据库的确切语法是什么 【发布时间】:2016-02-19 07:38:47 【问题描述】:

下面会在内存中创建db

Dim cn As SQLiteConnection = New SQLiteConnection("Data Source=:memory:")

下面将在 C:\Temp\ 中创建名为 abc 的磁盘文件 db

Dim cn As SQLiteConnection = New SQLiteConnection("Data Source=C:\Temp\abc")

或 下面将在默认位置创建名为 abc 的磁盘文件 db ..\SqliteProject\bin\Debug

Dim cn As SQLiteConnection = New SQLiteConnection("Data Source=abc")

但是..如何创建临时数据库?? documentation Link1 Link2 Link3 Link4 说“使用空文件名创建临时数据库”。但没有人说出确切的代码。 我尝试了各种组合

Dim cn As SQLiteConnection = New SQLiteConnection("") 
Dim cn As SQLiteConnection = New SQLiteConnection("Data Source=") 
Dim cn As SQLiteConnection = New SQLiteConnection("Data Source=C:\Temp\")

但都抛出异常/错误

【问题讨论】:

文件名必须为空。确切的错误是什么? 对于前两行代码,它说...“数据源不能为空。使用 :memory: 打开内存数据库”对于第三行,它说...“无效的 ConnectionString格式,无法解析:找到不平衡的转义或引号字符" 好吧,“数据源不能为空”是错误的。除非有其他机制来指定临时数据库,否则这似乎是您使用的任何 SQLite 驱动程序中的错误。 我从这里下载了“sqlite-netFx451-setup-bundle-x64-2013-1.0.99.0.exe”...system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki(它仍然在网页上)在执行设置后我引用了这个dll。 ..\bin\Debug\System.Data.SQLite_DLL\2013\bin\System.Data.SQLite.dll。它的版本是 1.0.99.0,运行时版本是 v4.0.30319 【参考方案1】:

System.Data.SQLite 使用以下代码检查数据库名称:

  fileName = FindKey(opts, "Data Source", DefaultDataSource);

  if (String.IsNullOrEmpty(fileName))
  
    fileName = FindKey(opts, "Uri", DefaultUri);
    if (String.IsNullOrEmpty(fileName))
    
      fileName = FindKey(opts, "FullUri", DefaultFullUri);
      if (String.IsNullOrEmpty(fileName))
        throw new ArgumentException(UnsafeNativeMethods.StringFormat(CultureInfo.CurrentCulture, "Data Source cannot be empty.  Use 0 to open an in-memory database", MemoryFileName));

因此无法指定空名称。

但是,可以使用空路径指定 URI 文件名:

New SQLiteConnection("FullUri=file:") 

【讨论】:

“CL”感谢您的解决方案,它真的帮助了我。但我的实际问题就在那里......事实上。我把它作为一个问题发布。 ***.com/questions/35551758/…

以上是关于使用 vb.net 打开 sqlite“临时”数据库的确切语法是啥的主要内容,如果未能解决你的问题,请参考以下文章

Datagridview 中的更改未保存在表 SQLite vb.net 中

SQLite——临时文件 & 内存数据库(待续)

SQLite——临时文件 & 内存数据库(待续)

SQLite剖析之临时文件内存数据库

如何选择使用 VB.NET 打开的 Excel 版本?

SQL Server查询参数用于将数据表复制到另一个表单ListView VB.net