У меня есть программа, которая вызывает процесс sqlplus.exe и посылает по аргументам пользователя / password@tnsname, но у одной из БД в пароле есть «@», если я пытаюсь вручную подключиться к базе данных через терминал sqlplus Я могу подключиться, используя кавычки в пароле, например:
CONN scott/"tig@r"@MYDB @file.sql
Но, если я попытаюсь вызвать Process в моей программе, используя его как аргументы со строкой, я могу ' т подключиться в базе данных. Таким образом, программа показывает ORA-12154.
Я пытался:
string connection = "scott/\"tig@r\"@MYDB @file.sql";
string connection = @"scott/""tig@r""@MYDB @file.sql";
string connection = @"scott@MYDB/""tig@r"" @file.sql";
string connection = "scott@MYDB\"tig@r\" @file.sql";
Я уже пытался без части @ file. sql, но без успеха.
Вот часть кода, который я использую.
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "sqlplus"; //open sqlplus
proc.StartInfo.Arguments = connection + " @" + tempFile;//send by arguments the connection and the file
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.Start();