Member 13999352 Ответов: 2

Как вставить новую запись в мою таблицу, если она не существует? В C# (oracle)


Всем привет
Я хочу вставить новую строку в свою таблицу, если она не существует.
Например, когда я пишу этот код:
Это дает мне ошибку
Цитата:
(Оракул.Доступа к данным.Клиент.Исключение OracleException: 'ORA-00911:)
Персонажи не подходят ')


Что я уже пробовал:

using (OracleConnection connection = new OracleConnection(strConnection))
            {
                char quote = '"';
              string strCommand = @"insert into tableinfo( "+quote+"name"+quote+","+quote+"age"+quote+") "+
                "select :name,:age from dual where not exists (select "+quote+"age"+quote+" from tableinfo where "+quote+"age"+quote+" = :age);";
                     
                OracleCommand command = new OracleCommand(strCommand, connection);
                command.Parameters.Add( new OracleParameter("name", "Zoxit"));
                command.Parameters.Add( new OracleParameter("age", 15));

                connection.Open();
                int res = command.ExecuteNonQuery();
//Problem is here(Oracle.DataAccess.Client.OracleException: 'ORA-00911:)
//Characters are not appropriate '
                Console.WriteLine("Result = " + res.ToString());
                Console.ReadKey();

                //insert into tableinfo( "name","age") values(:name,:age)
            }

2 Ответов

Рейтинг:
7

Member 13999352

Thank you and I solved this problem by using. I removed last semicolon than it worked.
strCommand = @"insert into tableinfo( "+quote+"name"+quote+","+quote+"age"+quote+") "+
                "select :name,:age from dual where not exists (select "+quote+"age"+quote+" from tableinfo where "+quote+"age"+quote+" = :age)";


Рейтинг:
2

CHill60

Проблема в том, что

string strCommand = @"insert into tableinfo( "+quote+"name"+quote+","+quote+"age"+quote+") "+
                "select :name,:age from dual where not exists (select "+quote+"age"+quote+" from tableinfo where "+quote+"age"+quote+" = :age);";
Нет никакой необходимости во всех этих цитатах

Смотрите эту статью CP о том, как это сделать правильно Параметризованные запросы Oracle для разработчика .NET[^]