为什么从C#调用sqlplus在Win7(64位)上运行而在WinXP(32位)上运行?

时间:2014-08-06 10:54:35

标签: c# sqlplus

我试图在C#中从SQL * Plus获取Oracle客户端版本,并在64位Windows 7和32位Windows XP上获得不同的结果。

这是我的代码:

try
{
    Process p = new Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "sqlplus.exe";
    p.StartInfo.Arguments = "-v";
    p.Start();
    OracleClient = p.StandardOutput
        .ReadToEnd()
        .Split(':')
        .TrimStart()
        .TrimEnd('\n','\r');
    p.WaitForExit();
}
catch (Exception)
{
    OracleClient = String.Empty;
}

在Windows 7上,OracleClient == "Release 11.2.0.1.0 Production"

在Windows XP上,OracleClient == ""

但是当我在XP中直接在命令行输入命令(sqlplus -v)时,它可以工作。所以我的问题是:为什么我的程序在Windows 7上运行,而在Windows XP上运行。

更新

我发现了错误:我正在阅读这个过程'在给它机会完成之前输出。

try
{
    Process p = new Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "sqlplus.exe";
    p.StartInfo.Arguments = "-v";
    p.Start();
    p.WaitForExit();
    OracleClient = p.StandardOutput
        .ReadToEnd()
        .Split(':')
        .TrimStart()
        .TrimEnd('\n','\r');
}
catch (Exception)
{
    OracleClient = String.Empty;
}

0 个答案:

没有答案