gpt4 book ai didi

c# - 添加了 OracleCommand 参数但抛出异常

转载 作者:太空宇宙 更新时间:2023-11-03 19:24:00 24 4
gpt4 key购买 nike

请你耐心看完我下面要写的代码。我有两种方法:

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

私有(private)字段_parameters是List类型。如您所见,这些方法分别创建输入和输出参数并将它们添加到 _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 方法的类中,我按顺序执行以下操作:

  1. 我首先使用 AddInParameters 和 AddOutparameters 添加参数
  2. 然后调用 ExecuteReader 方法。

但我有时会遇到“错误的参数数量或类型”Oracle 异常。如果我拒绝使用这些方法并继续使用标准方式(创建连接,然后是命令,然后一个接一个地添加参数,打开连接,最后调用 OracleCommand.ExecuteReader 方法),我不会收到该错误。奇怪的是,我在应用程序的入口处就使用了这些方法,但我从未在那里遇到过任何异常。我在执行 ExecuteReader 方法之前放置了一个断点来检查参数列表,一切似乎都很好,我的意思是所有参数都设置正确。你能告诉我我在这里遗漏了什么吗?

附言我使用 Oracle data Provider for .NET (Oracle.Data.Access.dll)。

最佳答案

您是否尝试过使用 OracleCommand.BindByName = true

关于c# - 添加了 OracleCommand 参数但抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com