2014-06-29 33 views
1

我使用ODP.NET Oracle.DataAccess.Client通过Asp.net c#插入记录在Oracle表中。 Oracle表是tblGroup和组名VARCHAR2,GROUPDETAILS VARCHAR2是列名 但数据并不inserting.I我用下面的代码数据没有通过asp.net使用ODP.NET插入oracle表

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.HandleError(Int32)上的Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode,OracleConnection conn,IntPtr opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,Object src,String procedure,Boolean bCheck) errCode,OracleConnection连接,字符串过程,IntPtr opsErrCtx,OpoSqlValCtx * pOpoSqlValCtx,Object src,Bool学校管理系统\ SchoolsManagementSystem \ App_Code \ DAL.cs中的第85行:SchoolsManagementSystem.Group中的第85行,学校管理系统.DAL.insertRecord(字符串StudentgroupName,字符串groupDetails)上的Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery() .btnSubmit_Click(对象发件人,EventArgs e)在d:\ C#\ SchoolsManagementSystem \ SchoolsManagementSystem \ Group.aspx.cs:行26

指引,我怎样才能解决我的问题

回答

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); 
+0

上前缀有趣的说明。我没有要测试的Oracle,但是它引发了错误,或者引擎简单地忽略了前缀? – Steve

+1

Oracle SQL解析器使用冒号指示绑定参数,无论是SQL,PL/SQL还是主机语言。 ADO驱动程序可能会或可能不会抱怨,但Oracle会。 @不是标识符或绑定变量的有效字符,因此可能会得到解析错误。我只知道它失败了,因为我有几个数据库工具可以销售Oracle和SQL Server的工作,我必须在两者之间使用条件代码。 – codenheim

+0

谢谢你的好意,我只是好奇。 – Steve

相关问题