2017-04-26 48 views
0

データベース移行のコンテキストで、OracleCommandをSqlCommandで置き換える必要があります。私のコードでは、私は myOracleCommand.BindByName = true;の使用を持っています。 BindByNameプロパティはSqlCommandクラスには存在しませんので、SqlCommandが 'bindbyname default'であるのかどうか疑問に思っていたので、この行を削除するだけでした。OracleCommandをSqlCommandで置き換えます。[C#/ ASP.NET]

+0

パラメータは、SQL Serverで名前でバインドされています。クエリと 'SqlParameter'インスタンスの両方ですべてのパラメータ名を変更する必要があります。 – Igor

+0

はい私はクエリと '' SqlParameter''のインスタンスを変更する必要性に同意します。しかし、私の記事で言及しているコード行について言えば、私はそれを削除することができますか? – Neo

+0

問合せ内の名前を確認してください。Oracleは、MS SQLに「@」が必要な場合はパラメータに ':'を使用します。 'select * from MyTable where id = @ prm_id' - >' MyTableからMyTableを選択* id::prm_id' –

答えて

0

あなたは(あなたがOracleCommandBindByName = trueを設定するときに何が起こるかである)の位置によってSqlCommandにその行(BindByName = true

パラメータは名前のみでバインドすることができますを転送し、決してない/無視することができます。


あなたにも、クエリ、おそらくSqlParameterインスタンスの両方ですべてのパラメータ名を変更する必要があります。

Oracleでは、:paramName、SQLサーバーでは@paramNameです。 SqlParameterインスタンス内のパラメータ名は@で始まります。そうでない場合、実行時にコマンドによって追加されます。

+1

私は、 'System.Data、Odbc'または' System.Data、OleDb'を使用してSQL Serverバックエンドで位置によってパラメータをバインドできることを追加したいだけです。名前でバインドするのは 'System.Data、SqlClient'だけです。これはマネージコードからSQL Serverにアクセスするための優先APIです。 –

+0

@DanGuzman - 良い点、私はSql ServerではなくSqlCommandを指定する答えを更新しました。 – Igor

関連する問題