2014-06-29 39 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

相關問題