【发布时间】:2021-10-06 01:08:37
【问题描述】:
我有一个名为 query.sql 的文件,其中包含一个事务,我想使用我的 C# 代码中的 sqlite 命令行执行该文件。它工作正常,但我无法从命令行输出中获取受影响的行。我想获取受影响的行并使用 MessageBox 显示它。
我使用 Process 的 C# 代码:
ProcessStartInfo startinfo = new ProcessStartInfo("sqlite3.exe");
startinfo.Arguments = string.Format("\"{0}\" \".read '{1}'\"",DatabasePath, Path.Combine(Path.GetTempPath(), "query.sql"));
//startinfo.WindowStyle = ProcessWindowStyle.Normal;
Process.Start(startinfo);
从命令行查看:
sqlite3.exe "C:\Users\me\AppData\Local\app\database.db" ".read 'C:\Users\me\AppData\Local\Temp\query.sql'"
我执行了命令并且数据库发生了变化,但我无法捕获受影响的行。如何从该进程中捕获受影响的行?
【问题讨论】:
-
为什么使用命令行而不是Sqlite .NET library?
-
是的,这对于 SQLite.NET 来说是一个非常好的用例。
-
INSERT 命令不返回行。
-
@Magnetron 我尝试将库用于导入案例,但性能如此不同。使用库,我需要使用流阅读器读取 sql 文件以将其分配给字符串,如果文件非常大,当我在诊断工具中看到时,处理和使用大内存需要很长时间。但我毫不怀疑我是否以错误的方式这样做。