为了从文件中读取sql,我正在尝试将sqlite.exe工具作为c代码中的进程运行。
如果我在powershell中运行sqlite3工具,那么它可以正常工作(sqlite3.exe“mydatabase.db”“.read mysql.sql”)
但是当我以进程的形式从我的c代码运行sqlite3工具时,mydatabase.db没有任何变化。sqlite3终止时仍然是0b。我没有得到错误消息,sqlite3.exe的输出是一个空字符串,退出代码是1(在退出事件中验证)。有人知道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);
}
1条答案
按热度按时间2eafrhcq1#
正如caiusjard在评论中所说,错误流中传递了一个错误。加上下面的几行告诉我我走错了路。
路径分隔符“\”已被删除,因为路径已被分析两次。一次设置参数,一次被工具读取。在我的路径中用“/”替换“\”就成功了