c# - 使用 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)
解决方案
推荐阅读
- sass - “你忘记发出异步完成信号了吗?”
- javascript - Angular Material Table - 拖动和滚动时,拖动的行不会放在正确的位置
- c++ - 如何在 C++ 中实现两个向量的编译时间乘积
- python - Fetch variable from a .txt
- r - 根据数据表设置更新闪亮的输入
- javascript - 如何将 return 语句分配给 Javascript 中的变量?
- reactjs - 测试与 Jest 反应时如何模拟 ApolloProvider
- git - 在 Git 中,当我将本地分支推送到远程时,如何将它们配置为具有前缀?
- python - 无法在 twitchio 中正确设置 initial_channels
- git - Git - 忽略对已在存储库中的文件的更改