0

この方法に問題があります。すべてのパラメーターが順番に存在しますが、それでも次のエラーが発生します: 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 を実行すると、以下のエラーが発生しました。

パラメータ [0] '' não tem valor padrão. 翻訳: パラメータ [0] には標準値がありません。
Parametro [1] '' não tem valor padrão.
Parametro [2] '' não tem valor padrão.

以下の方法も試してみましたが、パラメータを設定しようとするとエラーが発生しました。

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

OleDbParameterCollection は、OleDbParameter の新しいオブジェクトであり、DateTime のオブジェクトではありません。
翻訳: OleDbParameterCollection は、OleDbParameter 型の null 以外のオブジェクトのみを受け入れます。DateTime 型のオブジェクトを受け入れないでください。

4

1 に答える 1

1

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?

于 2010-07-13T17:58:21.453 に答える