我相信这个问题已经得到了回答,但是我无法找到一个答案使用搜索工具。
使用 c # 我想运行一个。Sql 文件。Sql 文件包含多个 sql 语句,其中一些语句分成多行。我尝试读取文件,并尝试使用 ODP.NET 执行文件... ... 但是我不认为 ExecuteNonQuery 真的是设计来做这件事的。
因此,我尝试通过生成进程来使用 sqlplus... ... 但是,除非我将 UseShellExecute 设置为 true sqlplus 并生成进程,否则 sqlplus 将被挂起并永远不会退出。这是行不通的代码。
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "sqlplus";
p.StartInfo.Arguments = string.Format("xx/xx@{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;
bool started = p.Start();
p.WaitForExit();
WaitForExit 永远不会返回... ..。除非我将 UseShellExecute 设置为 true。UseShellExecute 的一个副作用是无法捕获重定向的输出。