数据不是通过asp.net使用ODP.NET插入oracle表

时间:2014-06-29 19:13:34

标签: c# asp.net oracle odp.net

我使用ODP.NET Oracle.DataAccess.Client通过Asp.net c#在Oracle表中插入记录。 oracle表是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)中缺少表达式在SchoolsManagementSystem.DAL.insertRecord的Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()上的Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,OracleConnection conn,String procedure,IntPtr opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,Object src,Boolean bCheck) (字符串StudentgroupName,String groupDetails)位于d:\ c#:SchoolsManagementSystem \ SchoolsManagementSystem \ App_Code \ DAL.cs:第85行,位于d:\ c#\ SchoolsManagementSystem \ SchoolsManagementSystem \ Group中的SchoolsManagementSystem.Group.btnSubmit_Click(Object sender,EventArgs e)。 aspx.cs:第26行

指导我如何解决我的问题

1 个答案:

答案 0 :(得分:3)

在SQL语句中,使用冒号前缀表示绑定参数,而不是@:

INSERT INTO t (COL1) values(:param1)

使用@符号适用于SQL Server,而不适用于Oracle。

此外,您的绑定语句只需使用名称" GROUPNAME",在参数.Add()调用中不需要前缀字符@或:

像这样:

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

cmd.Parameters.Add("GROUPNAME", StudentgroupName);
cmd.Parameters.Add("GROUPDETAILS", groupDetails);