Не все переменные связаны (но они есть) - PullRequest
0 голосов
/ 13 июля 2010

У меня проблема с этим методом. Все параметры есть, и в порядке, но я все еще получаю эту ошибку: ORA-01008: не все переменные связаны

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);
            }

        }

Теперь я попробовал с? заполнитель, как говорит Скит:

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

Способом выше я получил ошибку ниже, когда я запускаю ExecuteNonQuery.

Parâmetro [0] '' não tem valor padrão. Перевести: Параметр [0] не имеет стандартного значения.
Parâmetro [1] '' não tem valor padrão.
Parâmetro [2] '' não tem valor padrão.

Также попробовал этот способ ниже и получил ошибку при попытке установить параметр.

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.
Перевести: OleDbParameterCollection поддерживает только ненулевые объекты типа OleDbParameter. Не принимайте объекты типа DateTime.

1 Ответ

1 голос
/ 13 июля 2010

Согласно документам для OleDbCommand.Parameters нельзя использовать именованные параметры:

Поставщик OLE DB .NET не поддержка именованных параметров для передачи параметры для оператора SQL или хранимая процедура, вызываемая OleDbCommand, когда установлен CommandType печатать. В этом случае вопрос Отметка (?) должна быть заполнителем.

Вы пробовали вместо этого использовать заполнители?

...