簡體   English   中英

控制第二個cmd窗口-C#

[英]Controlling 2nd cmd window - c#

我正在嘗試使用DB2的命令行處理器。 在命令行上使用它時,我輸入:db2cmd,然后打開第二個窗口,我可以在其中連接到數據庫並提交查詢。 我試圖為CLP寫一個包裝器,當我訪問命令行時,它在第二個窗口中打開DB2 CLP,但我不知道如何將爭論發送到新窗口。 這是我所擁有的:

    static void Main(string[] args)
    {
        var p = new Process();
        var info = new ProcessStartInfo();
        info.FileName = "db2cmd";
        info.RedirectStandardInput = true;
        info.UseShellExecute = false;
        info.CreateNoWindow = true;

        p.StartInfo = info;
        p.Start();

        using (var sw = p.StandardInput)
        {
            sw.WriteLine("DB2 CONNECT TO dbname USER \"username\" USING \"password\"");
            sw.WriteLine("DB2 SELECT * FROM SPYPRD.CLMDTL FETCH FIRST 10 ROWS ONLY");
        }
    }

最好使用C#的替代接口(例如ADO .net接口),而不是使用CLP。

要使用ADO(或jdbc / odbc等)中的LOAD和EXPORT等命令,如果Db2服務器在Linux / Unix / Windows上運行,則可以通過存儲過程SYSPROC.ADMIN_CMD()調用它們。 請注意該存儲過程的文檔中的詳細信息,因為所有文件名都是相對於Db2服務器(而不是工作站)的。

不知道CLP是否接受stdin重定向的密碼-您還需要解析stdout,也許很麻煩。

如果數據庫是本地數據庫,則可以使用CLP,而無需在CONNECT語句上使用用戶ID /密碼。 如果希望使用不同的憑據進行連接,請使用runA獨立於CLP來指定憑據,以避免需要向CLP發送參數。

如果數據庫是遠程數據庫,並且在Linux / Unix / Windows上,則最好使用CLP以外的替代接口(例如ADO等),或考慮將腳本傳送到遠程服務器以根據需要在Db2-LUW服務器上本地運行-user再次避免使用密碼(例如,如果Db2服務器在Linux / Unix / Windows上運行,請使用與psexec或ssh等價的工具)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM