我正在尝试将sqlite.exe工具作为c#代码中的一个进程运行,以便从文件中读取sql。
如果我在Powershell中运行sqLite3工具,那么它将正常工作(sqlite3.exe“ mydatabase.db”“。read mySql.sql”)
但是,当我从C#代码运行sqlite3工具作为进程时,mydatabase.db却没有任何反应。 sqlite3终止时仍为0b。 我没有收到错误消息,sqlite3.exe的输出为空字符串,退出代码为1(在exit事件中验证)。有谁知道为什么database.db为什么.sql文件中的记录未添加到.db文件?
using (Process pProcess = new Process())
{
pProcess.StartInfo.FileName = sqlLite3ExePath;
pProcess.StartInfo.Arguments = $"\"{sqLitePath2}\" \".read {sqlPath}\"";;
pProcess.StartInfo.UseShellExecute = false;
pProcess.StartInfo.RedirectStandardOutput = true;
pProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;//System.Diagnostics.ProcessWindowStyle.Hidden;
pProcess.StartInfo.CreateNoWindow = false;//true; //not diplay a windows
pProcess.EnableRaisingEvents = true;
pProcess.Exited += PProcess_Exited;
pProcess.Start();
string output = pProcess.StandardOutput.ReadToEnd(); //The output result
pProcess.WaitForExit();
Debug.WriteLine(output);
}
答案 0 :(得分:1)
正如CaiusJard在评论中所说,错误流中传递了一个错误。添加以下几行告诉我我的路径是错误的。
pProcess.StartInfo.RedirectStandardError = true;
string error = pProcess.StandardError.ReadToEnd(); //The output result
由于路径已被解析两次,因此删除了路径分隔符“ \”。一次设置参数,一次在工具读取参数时。在我的路径中将“ \”替换为“ /”可以达到目的