-1

複数のデータベース(この時点では SQL Server、Oracle、MySQL、および PostgreSQL )をサポートするプロジェクト用のデータ レイヤー ライブラリを開発しようとしています。多くの場合、データベース サーバーはパブリック クラウドでホストされます。データ アクセス (選択、挿入、更新、削除) は、Windows フォーム クライアントおよび Web サーバーから実行されます。winforms Client は、最小限の db ラウンド トリップが行われるように設計することを私に強制します。

私が抱えている問題は、「単一のデータベース ヒットで複数の挿入または更新を一緒にプッシュする方法」です。

私はこれについて多くのグーグルと調査を行ってきました.SQLインジェクション攻撃を念頭に置いて、パラメータ化された挿入/更新が方法であることを知っています. しかし、データベースへの複数回の往復を望まないので、私には適していません。

BulkCopy は SQL Server 固有のものであり、主に挿入に使用されます。

ストアド プロシージャ/XML - さまざまなデータベースがあり、データベースごとにストアド プロシージャを維持するのが難しくなっています。また、テーブルの数は静的ではありません。アプリケーションは本質的に非常に動的であるため、新しいテーブルがいつでも導入されたり、既存のテーブルが変更されたりする可能性があります。

私にとっての最良のオプションは、(この時点で)SQL文字列を連結し(もちろんStringBuilderを使用して)、一度にクエリを実行することです。owasp-esapi-dotnet ライブラリ( http://code.google.com/p/owasp-esapi-dotnet/ )を見ましたが、SQL エンコーディング (SQL インジェクションを防ぐため) は実装されていません。また、プロジェクトは現在死んでいるように見えます (最後のコミットは 2010 年 12 月でした)。

複数のデータベース (少なくとも SQL Server、Oracle、MySQL、および PostgreSQL) の SQL インジェクションを処理するオープン ソースの実装はありますか?

この目標を達成できる他の方法はありますか (1 回のデータベース往復で複数の挿入/更新)。

.NET 4 で C# を使用しています。

編集: クライアントが希望する DB ベンダーを選択/選択できる製品として、これを展開しようとしています。

4

1 に答える 1

0

これが私の問題なら、SQL Server にリンク サーバーをセットアップします。次に、アプリケーションから必要なパラメーターを受け取って処理するストアド プロシージャを作成します。

于 2013-02-24T16:14:49.473 に答える