以下に記述するコードを調べてください。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タイプの一覧は次のとおりです。私は2つの方法があります。ご覧のように、これらのメソッドは、それぞれInputパラメーターとOutputパラメーターを作成し、それらを_parametersリストに追加します。
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;
}
すべてのこれらのメソッドそして私は、OracleCommandを取ると、それにリスト内のすべてのパラメータが追加されます以下の方法を持っていますデータアクセス層クラスライブラリにあります。私は順番に、私は次の操作を行いExcuteReaderメソッドをコールするクラスでは:
- 私が最初にAddInParametersとそれから私は、ExecuteReaderメソッドを呼び出す
- AddOutparametersを使用してパラメータを追加します。
しかし、私はときには、誤った番号またはタイプの引数をOracle例外として取得します。これらのメソッドを使用することを拒否すれば、標準的な方法(接続の作成、コマンド、次にパラメータの追加、接続のオープン、最後にOracleCommand.ExecuteReaderメソッドの呼び出し)を実行します。奇妙なのは、私はアプリケーションの入口でこれらのメソッドを使用していますが、私はそこで例外を何度も得たことはありません。 ExecuteReaderメソッドの実行前に、すべてのパラメータが正しく設定されていることを確認するために、ブレークポイントを配置します。私がここで紛失していることを教えてください。
P.S.私はOracle Data Provider for .NET(Oracle.Data.Access.dll)を使用します。
:私はあなたsuggested.Youは命の恩人であるかを試してみました後http://forums.asp.net/t/606602.aspx/1 –