首页 > 解决方案 > 不可能 DETACH 数据库(来自 c#)

问题描述

我可以附加数据库并将所有数据从一个数据库复制到另一个数据库。但最后我无法使用相同的代码将其分离。

     var connection = new SQLiteConnection(connection)
     connection.Open();
     sqlAttachCommand = "ATTACH database '" + fileLoc + "' AS toMerge";
     var cmd= new SQLiteCommand(sqlAttachCommand);
     cmd.Connection = connection;
     cmd.ExecuteNonQuery();
     ...
     sqlAttachCommand = "DETACH database '" + fileLoc + "'";   

例外是:

SQL 逻辑错误或缺少数据库没有这样的数据库:C:\temp\database.db"。

这很奇怪,因为我确实为它附加了它,并且我复制了这个数据库中的所有数据。

标签: c#sqlite

解决方案


DETACH DATABASE命令将模式名称作为参数,而不是数据库文件。

所以你的分离命令应该是这样的:

sqlAttachCommand = "DETACH database toMerge";   

就像在您的 ATTACH 命令中一样,您将其命名为 thing toMerge

在 SQL Exception 中,丢失的数据库并不是指 SQLite 丢失了该文件的事实,它只是试图告诉您正在使用不存在的模式名称。


推荐阅读