Я пытаюсь написать программу наподобие компилятора.В этом случае я должен смоделировать эти коды SQLPL (этот может быть только для примера).Например, в командной строке я хочу сделать это:
c:\> sqlplus
....
Enter User-Name:(here we must enter username) xxxx
Enter password:(same up)yyyyy
...
sql>(now I want to send my sql command to shell)prompt "rima";
"rima" [<-output]
sql> prompt "xxxx"
sql> exit
очень просто.Я пытаюсь использовать этот код:
ProcessStartInfo psi = new ProcessStartInfo(
@"sqlplus");
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardInput = true;
psi.RedirectStandardOutput = true;
//psi.RedirectStandardError = true;
Process process = new Process();
process.StartInfo = psi;
bool started = process.Start();
if (started)
{
process.StandardInput.WriteLine("user/password");
process.StandardInput.Flush();
string ret = process.StandardOutput.ReadLine(); // <-- stalls here
System.Console.WriteLine("sqlplus says :" + ret + "\".");
}
Я нахожу его форму здесь , но, как будто вы читаете этот код, есть проблема!DEADLOCK Состояние проблемы!Это мой второй раз, когда я задаю свой вопрос, каждый раз, когда мои знания растут, но я не могу понять, как наконец-то решить свою проблему !!!
Поэтому я любезно целую вашу руку, пожалуйста, помогите мне,этот процесс мне не понятен.Кто-нибудь может дать мне код, который решит мою проблему?Я уже смотрю на все коды, а также пытаюсь использовать ProcessRunner, который в моем последнем посте кто-то мне предлагал, но я тоже не могу его использовать, я получаю сообщение об ошибке.
Надеюсь сначалаНапример, вы узнаете, что я хочу, и решите вторую проблему кода ...
Я использую C # для реализации, также моя БД - Oracle
Я не хочу закрывать sqlplus каждый разподключение, потому что для входа в систему требуется время.