我想使用C#在Db2 for z/OS V12上执行bind语句。在db2 cmd中,它工作正常:
db2 bind filename.bnd owner OOO qualifier QQQ collection CCC explain no grant public
在C#中,我启动了一个db2 cmd进程,我想写入StandardInput并记录输出,但两个都不起作用:命令未执行,也未返回任何输出。
using (var p = new Process
{
StartInfo =
{
FileName = "db2cmd",
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true
}
})
{
p.OutputDataReceived += (sender, e) => { Console.WriteLine(e.Data); };
p.ErrorDataReceived += (sender, e) => { Console.WriteLine(e.Data); };
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.StandardInput.WriteLine($"db2 connect to {DataBase} user {User.Userid} using {User.Password}");
p.StandardInput.WriteLine("db2 bind filename.bnd owner OOO qualifier QQQ collection CCC explain no grant public");
p.WaitForExit();
}
我做错了什么?有更好的解决办法吗?
1条答案
按热度按时间f45qwnt81#
通过向db2cmd.exe程序提供参数
-i
解决了该问题。此参数documented为:
在共享Db2命令窗口并继承文件句柄时,在-i选项后运行命令。例如,db2 cmd-i dir在同一Db2命令窗口中运行dir命令。”