2010/08/26(Thu) 11:28:04 編集(投稿者)
2010/08/26(Thu) 11:27:26 編集(投稿者)
2010/08/26(Thu) 11:27:13 編集(投稿者)
<pre>
■No52858 (マサヤ さん) に返信
> SqlParameterの話ですが、
> いま、環境にOracleがないのですみません。
> SqlのとこをOracleに変えたらうまくいかないでしょうか?
返信ありがとうございます。
///dataaccess class
メソッドを行うとこ以外はクラス内部で完結させてみましたが、駄目でした。
public System.Data.DataSet ReturnDataSet
(string query, string dataMember, int _start, int _end)
{
cmd.CommandText = query;
cmd.CommandType = System.Data.CommandType.Text;
using (OracleDataAdapter oda = new OracleDataAdapter(cmd.CommandText, Cnn))
{
using (System.Data.DataSet da = new System.Data.DataSet())
{
AddOracleParameter(_start, _end);
oda.Fill(da, dataMember);
return da;
}
}
}
private void AddOracleParameter
(object value1, object value2)
{
OracleParameter[] param = new OracleParameter[]
{new OracleParameter("startDate", OracleDbType.Int32),
new OracleParameter("endDate", OracleDbType.Int32)};
param[0].Value = value1;
param[1].Value = value2;
cmd.BindByName = true;
foreach (OracleParameter item in param)
{
cmd.Parameters.Add(item);
}
}
cmd.Parametersには登録されているのですが、Fillメソッドを行うとやはり
バインドされていない〜がでてしまいます。
実際のsqlを流す時に、実数を入力すると正常に結果セットが得られるのですが
名前付きパラメータのバインドがやはり上手くいかないようなのです。
対応するパラメータはSQL文のサブクエリ内の :startDate param[0]
:endDate param[1] で param[]内のparameternameはstartDate及びendDateになっている事は
ブレークポイントを設置し確認済みです。
</pre>