Данные не вставляют таблицу оракула, используя ODP.NET через asp.net

1

Я вставляю запись в таблицу Oracle, используя ODP.NET Oracle.DataAccess.Client throug Asp.net С#. Таблица оракула - tblGroup и GROUPNAME varchar2, GROUPDETAILS varchar2 - это имя столбца, но данные не вставляются. Я использую следующий код

 public void insertRecord(string StudentgroupName, string groupDetails) 
            {
                using (OracleConnection con = GetConnection())
                {

                    OracleCommand cmd = new OracleCommand();
                    cmd.Connection = con; //assigning connection to command
                    cmd.CommandType = CommandType.Text; //representing type of command
                    cmd.CommandText = "INSERT INTO tblGroup (GROUPNAME,GROUPDETAILS) values(@GROUPNAME,@GROUPDETAILS)";

                    //adding parameters with value
                    cmd.Parameters.Add("@GROUPNAME", StudentgroupName);
                    cmd.Parameters.Add("@GROUPDETAILS", groupDetails);

                    con.Open(); //opening connection
                    cmd.ExecuteNonQuery();


                }
            }

и получил следующую ошибку

Oracle.DataAccess.Client.OracleException ORA-00936: отсутствует выражение в Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) в Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx * pOpoSqlValCtx, Object src, Boolean bCheck) в Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery() в SchoolsManagementSystem.DAL.insertRecord(String StudentgroupName, String groupDetails) в d:\С#\SchoolsManagementSystem\SchoolsManagementSystem\App_Code\DAL.cs: строка 85 в SchoolsManagementSystem.Group.btnSubmit_Click (отправитель объекта, EventArgs e) в d:\С#\SchoolsManagementSystem\SchoolsManagementSystem\Group.aspx.cs: строка 26

Как мне решить мою проблему?

Теги:
odp.net

1 ответ

3
Лучший ответ

В вашей инструкции SQL используйте префикс двоеточия, чтобы указать параметр привязки, а не @:

INSERT INTO t (COL1) values(:param1)

Использование символа @работает нормально для SQL Server, а не для Oracle.

Кроме того, ваш оператор привязки должен просто использовать имя "GROUPNAME", символ префикса @или: необходимо в вызове parameters.Add().

Вот так:

cmd.CommandText =
   "INSERT INTO tblGroup (GROUPNAME,GROUPDETAILS) values(:GROUPNAME, :GROUPDETAILS)";

cmd.Parameters.Add("GROUPNAME", StudentgroupName);
cmd.Parameters.Add("GROUPDETAILS", groupDetails);
  • 0
    Интересная заметка по префиксу не нужна. У меня нет Oracle для тестирования, но возникает ошибка или префикс просто игнорируется движком?
  • 1
    Синтаксический анализатор Oracle SQL использует двоеточие для указания параметров связывания, будь то SQL, PL / SQL или языки хоста. Драйвер ADO может или не может жаловаться, но Oracle будет. Символ @ не является допустимым символом для идентификатора или переменной связывания, поэтому, возможно, вы получите ошибку разбора. Я просто знаю, что это терпит неудачу, потому что у меня есть несколько инструментов баз данных, которые я продаю, которые работают на Oracle и SQL Server, и я должен использовать условный код между ними.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню