What query syntax should I use for inserting records in an Oracle database?
You need to use the named parameter for your command
string str = "Insert into EMP_DETAIL(EmpId, Name, Age) values (:EmpId, :Name, :Age)";OracleCommand cmd = new OracleCommand();cmd.CommandText = str; //cmd.CommandText = Text; not sure why did you use Text herecmd.Connection = con;cmd.Parameters.Add(new OracleParameter("EmpId", OracleDbType.Varchar2)).Value = txtEmpId;cmd.Parameters.Add(new OracleParameter("Name", OracleDbType.Varchar2)).Value = txtName;cmd.Parameters.Add(new OracleParameter("Age", OracleDbType.Int16)).Value = int.Parse(txtAge.Text);cmd.ExecuteNonQuery();
As agent5566 said, and from OracleCommand.Parameters
property;
When using named parameters in an SQL statement called by an
OracleCommand
ofCommandType.Text
, you must precede the parameter name with a colon (:
)
Use them like;
using(var con = new OracleConnection(constr))using(var cmd = con.CreateCommand()){ cmd.CommandText = @"Insert into EMP_DETAIL(EmpId, Name, Age) values (:EmpId, :Name, :Age)"; cmd.Parameters.Add(new OracleParameter("EmpId", OracleDbType.Varchar2)).Value = txtEmpId; cmd.Parameters.Add(new OracleParameter("Name", OracleDbType.Varchar2)).Value = txtName; cmd.Parameters.Add(new OracleParameter("Age", OracleDbType.Int16)).Value = int.Parse(txtAge.Text); con.Open(); cmd.ExecuteNonQuery();}
By the way, System.Data.OracleClient
has been marked as deprecated in .NET 4 version. You might wanna use Oracle Data Provider for .NET instead.
As an alternative, DataDirect and DevArt also have their own oracle providers for .NET.