Я вставляю запись в таблицу 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
Как мне решить мою проблему?
В вашей инструкции 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);