0

I'm getting an error message of "ORA-00936: missing expression" at this cmd.ExecuteNonQuery(); I have a feeling it will be something extremely obvious! Any help would be great

private void button2_Click(object sender, EventArgs e)
{         
        string oradb = "Data Source=(DESCRIPTION="
      + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.8.103)(PORT=1521)))"
      + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));"
      + "User Id=scott;Password=tiger;";
        OracleConnection conn = new OracleConnection(oradb);
        OracleCommand cmd = new OracleCommand("select empno,FNAME,LNAME,JOBID,ADDRESS from employee", conn);
        OracleDataAdapter da = new OracleDataAdapter(cmd);
        conn.Open();
        OracleDataReader read = cmd.ExecuteReader();
        while (read.Read())
                {
        REA rea = new REA();
       Int64 vempno = read.GetInt64(0);
       String  fnameValue = read.GetString(0);
       String lnameValue = read.GetString(1);
       String afterConcatfname = rea.Encrypt(fnameValue, rea.GenerateKey());
       String afterConcatlname = rea.Encrypt(lnameValue, rea.GenerateKey());           
      cmd.CommandText = "update employee set fname=:fname, lname =:lname where empno=:empno";               
      OracleParameter fname = new OracleParameter("fname", afterConcatfname);
      OracleParameter lname = new OracleParameter("lname", afterConcatlname);
      OracleParameter empno = new OracleParameter("empno", vempno);
      cmd.Parameters.Add(fname);
      cmd.Parameters.Add(lname);
      cmd.Parameters.Add(empno);
      cmd.Prepare();
      MessageBox.Show(cmd.CommandText);
      cmd.ExecuteNonQuery();
      cmd.Dispose();
      conn.Close();
      MessageBox.Show("User updated!");
      DataTable t = new DataTable();
      da.Fill(t);
     dataGridView1.DataSource = t;
}                
Msama
  • 17
  • 3
  • 1
    You're disposing everything in the loop. When the loop runs more than once, this must fail. Indenting the code correctly may help. – Thomas Weller Mar 18 '17 at 10:12
  • Use `:param` in the query instead of `@param`, and omit the `@` when providing the parameter. See duplicate. – CodeCaster Mar 18 '17 at 10:15
  • I replaced @param with :param , it eliminated the error but it dosent update data in the table in a correct way – Msama Mar 19 '17 at 03:07
  • I want to get the data from the table and apply an encryption function on these valuse returned from the table and update the table by these encrypted data – Msama Mar 19 '17 at 03:11

0 Answers0