SQLと同じ表記法を使用してSQL Serverのバインド変数を示すことができますか?つまり、?を使用する代わりに、0、:1です。バインド変数のオプション
私は検索しましたが、決定的なものは見つかりませんでした。現時点では、私のソリューションはバインド変数を使用して、Oracleでうまくいくデータベースで実行するステートメントに値を導入していますが、SQL ServerとPostGISでも同じことを行う必要があります。 *
switch(dialect)
{
case "Oracle":
{
oleDataBaseConnection.AddParameter(":1", coordsys);
break;
}
case "SQLServer":
{
oleDataBaseConnection.AddParameter("?", coordsys);
break;
}
}
AddParameter()私が書いた実行関数を呼び出すときにコマンドオブジェクトに追加するリストに値を追加私のラッパークラスからの機能である:私は、たとえば言わなければならないしたくありません。
私のコードはできるだけきれいで、上に示したようにハードコードされたものは含まないようにしたいと思います。私はすべてに合った解決策を望んでいます。 (はい、私はおそらく希望の思考であることを知っています!)
私はこれを行うために文字列を使用することができます知っているが、それは私が何をしていない。私は本当にそのような回避策を使用したくない。また、私のプロジェクトマネージャは、バインド変数を使って解決策を見つけようとしました。
アイデア?
私はあなたが意味するものを得ると思います。基本的には、コマンドにパラメーターを追加すると、ラッパークラスによって文字の置換が処理されます。だから私は今のように必要な方言をsimpyで検出し、正しい構文を入れますか?または:。 1つの問題は、私のデータベースの1つがバインド変数をまったくサポートしていない可能性があることです。私はこの場合、私のコードで文字列の置換をしなければならないだろうと思っていますが、手作業でバインド変数をサポートしていないことを知っていなければなりません。本当に面倒な作業です。 – CSharpened
@CSは正確に訓練されています。しかし、この時点では、すべてのまともなデータベースドライバが何らかの形でバインド変数をサポートすることを期待しています。なぜなら、SQLインジェクション攻撃を避けるためには非常に重要だからです。 – btilly
情報ありがとうございました。あなたの提案をうまく実装できるかどうかがわかります。それは私が必要と思っていたように思えますが、もう少し洗練された解決策があることを望んでいました。ありがとう。 – CSharpened