views:

34

answers:

1

I am having a problem with this method. All the parameters are there, and in order, but I still get this error: ORA-01008: not all variables bound

protected void LastUpdateDates(string Path, string Key, bool Update)
        {
            //load the update dates of the mta files 
            try
            {
                FileInfo file = new FileInfo(Path);
                string query = string.Empty;

                if (myOleDbConnection.State == ConnectionState.Closed) { myOleDbConnection.Open(); }
                OleDbCommand myOleDbCommand = new OleDbCommand();                
                query = "UPDATE USER_LINK_MTA_LOGS SET DT_ATUALIZACAO=:PDT, DS_CAMINHO=:PFULLNAME WHERE ID_ARQUIVO=:PKEY";


                myOleDbCommand.Connection = myOleDbConnection;
                myOleDbCommand.CommandText = query;
                myOleDbCommand.Parameters.AddWithValue(":PDT", file.LastWriteTime);
                myOleDbCommand.Parameters.AddWithValue(":PFULLNAME", file.FullName);
                myOleDbCommand.Parameters.AddWithValue(":PKEY", Key);

                myOleDbCommand.ExecuteNonQuery();

                myOleDbCommand.Dispose();


            }
            catch (Exception exxx)
            {
                ErrorHandler.TreatError("Could not obtain MTA configuration\r\n" + exxx);
            }

        }

now i tried with the ? place holder as Skeet says:

myOleDbCommand.Parameters.Add(file.LastWriteTime.ToString(),OleDbType.DBTimeStamp);
myOleDbCommand.Parameters.Add(file.FullName,OleDbType.VarChar);
myOleDbCommand.Parameters.Add(Key,OleDbType.VarChar);

The way above I got the error below when i run the ExecuteNonQuery.

Parâmetro [0] '' não tem valor padrão. Translate: Paramenter [0] has no standard value.
Parâmetro [1] '' não tem valor padrão.
Parâmetro [2] '' não tem valor padrão.

Also tried this way below, and got an error when tring to set the parameter.

myOleDbCommand.Parameters.Add(file.LastWriteTime);
myOleDbCommand.Parameters.Add(file.FullName);
myOleDbCommand.Parameters.Add(Key);

OleDbParameterCollection só aceita objetos do tipo OleDbParameter não nulos, não aceita objetos DateTime.
Translate: OleDbParameterCollection only acepts non-null objets of the type OleDbParameter. Do not accept objets of the DateTime Type.

+1  A: 

According to the docs for OleDbCommand.Parameters you can't use named parameters:

The OLE DB .NET Provider does not support named parameters for passing parameters to an SQL statement or a stored procedure called by an OleDbCommand when CommandType is set to Text. In this case, the question mark (?) placeholder must be used.

Have you tried using placeholders instead?

Jon Skeet
see above, i have updated the question based on your suggetion
kurast