并非所有变量都绑定(但它们都在那里)

时间:2010-07-13 17:51:26

标签: c# oracle parameters ora-01008

我遇到此方法的问题。所有参数都在那里,按顺序,但我仍然得到这个错误: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);
            }

        }

现在我试过了吗?作为Skeet的占位符说:

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ãofmvalorpadrão。翻译:Paramenter [0]没有标准值 Parâmetro[1]''nãotemvalorpadrão Parâmetro[2]''nãofmvalorpadrão。

下面也尝试过此方法,并在设置参数时遇到错误。

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

OleDbParameterCollectionsóaceitaobjetos do tipoOleDbParameternãonulos,nãaceitaitaobjetos DateTime。
翻译:OleDbParameterCollection只能使用OleDbParameter类型的非null对象。不接受DateTime类型的objets。

1 个答案:

答案 0 :(得分:1)

根据docs for OleDbCommand.Parameters,您无法使用命名参数:

  

OLE DB .NET提供程序没有   支持传递的命名参数   SQL语句或参数的参数   由...调用的存储过程   设置CommandType时的OleDbCommand   到文本。在这种情况下,问题   必须使用mark(?)占位符。

您是否尝试过使用占位符?

相关问题