請耐心等待下面我要寫的代碼。我有2種方法:添加了OracleCommand參數,但拋出了異常
public void AddInParameters(string parameterName, OracleDbType dbtype,
object value)
{
OracleParameter myparameter = new OracleParameter();
myparameter.ParameterName = parameterName;
myparameter.OracleDbType = dbtype;
myparameter.Value = value;
myparameter.Direction = ParameterDirection.Input;
this._parameters.Add(myparameter);
}
和
public void AddOutParameter(string parameterName, OracleDbType dbType)
{
OracleParameter myparameter = new OracleParameter();
myparameter.ParameterName = parameterName;
myparameter.OracleDbType = dbType;
myparameter.Direction = ParameterDirection.Output;
this._parameters.Add(myparameter);
}
私人領域_parameters的類型是List。正如你所看到的,這些方法分別創建Input和Output參數並將它們添加到_parameters列表中。然後,我有以下方法,將採取的OracleCommand和列表中的所有參數添加到它:
private void ProcessParameters(OracleCommand command)
{
foreach (OracleParameter myparameter in this._parameters)
{
command.Parameters.Add(myparameter);
}
}
這是我的一個返回OracleDataReader最後一個方法:
public OracleDataReader ExecuteReader(string commandText, CommandType commandType)
{
OracleDataReader returnValue = null;
OracleCommand myCommand = this.CreateCommand(commandText, commandType);
this.ProcessParameters(myCommand);
try
{
myCommand.Connection.Open();
returnValue = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw new DatabaseException(ex.Message);
}
return returnValue;
}
所有這些方法在數據訪問層類庫中。當我想打電話給ExcuteReader方法我做以下步驟,以便類:
- 我第一次使用AddInParameters和AddOutparameters
- 然後我打電話ExecuteReader方法添加參數。
但我有時會得到「錯誤的數字或類型的參數」Oracle異常。如果我拒絕使用這些方法,請繼續使用標準方式(創建連接,然後是命令,然後逐個添加參數,打開連接並最終調用OracleCommand.ExecuteReader方法)。我不會收到該錯誤。奇怪的是,我在應用程序的入口處使用了這些方法,但我從來沒有得到任何異常。在ExecuteReader方法的執行之前,我放置了一個斷點來檢查參數列表,所有東西都很好,我的意思是所有參數都設置正確。你能否告訴我我在這裏失去了什麼?
P.S.我使用Oracle的Oracle數據提供程序(Oracle.Data.Access.dll)。
這裏閱讀:http://forums.asp.net/t/606602.aspx/1 – 2012-04-13 05:18:52