我遇到此方法的问题。所有参数都在那里,按顺序,但我仍然得到这个错误: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。
答案 0 :(得分:1)
根据docs for OleDbCommand.Parameters
,您无法使用命名参数:
OLE DB .NET提供程序没有 支持传递的命名参数 SQL语句或参数的参数 由...调用的存储过程 设置CommandType时的OleDbCommand 到文本。在这种情况下,问题 必须使用mark(?)占位符。
您是否尝试过使用占位符?