首页 > 解决方案 > 使用 SqliteCommand.CommandText 附加数据库

问题描述

我正在尝试运行一个查询,该查询涉及连接来自 2 个不同数据库的表。( SQLite )

注意:这是.NET Core 2.0上的类库

这是代码:

using Microsoft.Data.Sqlite;

//Connection string to initial DB
SqliteConnection cnn = new SqliteConnection(@"Data Source=C:\path\Local\SQLite\DATABASE1.db");
cnn.Open();
SqliteDataReader reader;
SqliteCommand cmd = new SqliteCommand();

using (cmd = cnn.CreateCommand()){
    cmd.CommandText = @"
                ATTACH DATABASE 'C:\path\Local\SQLite\DATABASE2.db' AS database2;
                SELECT  act.ID, ap.Name As AppName, au.EmailAddress, et.Name
                FROM database1table1 act
                INNER JOIN database1table2 et on et.id = act.descId
                INNER JOIN database2.table1 ap on ap.ID = act.AppID
                INNER JOIN database2.table2 au on au.ID = act.UserID";

    cmd.CommandType = CommandType.Text;
    // V ERROR occurs here V
    reader = secure_cmd.ExecuteReader();
}
// Do stuff with reader
cnn.Close();

C#-environment中,我得到的错误是:

Microsoft.Data.Sqlite.SqliteException (0x80004005):SQLite 错误 1:“没有这样的表:database2.table1”。

我还有用于 SQLite 的 DB Browser(这是我最初测试所有内容的地方)。我最初使用 GUI 来附加(“文件”->“附加数据库”选项),查询按预期工作。

但是使用 SQL 编辑器附加,当我运行时:

ATTACH DATABASE 'C:\path\Local\SQLite\DATABASE2.db' AS database2;

我收到此错误:

cannot ATTACH database within transaction: ATTACH DATABASE 'DATABASE2.db' AS database2;

我尝试在不同的命令上设置附加。我也尝试过这里发布的建议:Merging two SQLite database files (C# .NET)

标签: c#sqlsqliteasp.net-core

解决方案


推荐阅读