使用C#绑定到Db2

egdjgwm8  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(149)

我想使用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();
}

我做错了什么?有更好的解决办法吗?

f45qwnt8

f45qwnt81#

通过向db2cmd.exe程序提供参数-i解决了该问题。
此参数documented为:
在共享Db2命令窗口并继承文件句柄时,在-i选项后运行命令。例如,db2 cmd-i dir在同一Db2命令窗口中运行dir命令。”

相关问题