2009-07-08 4 views
0
にロードする

私はSQL Server 2008とVS 2008 Proを持っています。私はC#でコーディングしています。私は顧客からのテキスト入力ファイルを受け入れ、このデータをC#aspx.csファイルのDataTableに解析します。私はこれが正しく働いていることを知っています。そこで私はDataTableにデータを設定しました。しかし今、このデータをSPにどのようにロードするのですか?私は動的テーブルパラメータを使用することができますか?代わりにXMLを使用する必要がありますか?DataTableをSP

問題は、挿入するテーブルによって必要な列の数が異なることがあることです。詳細は、データを追加する表をユーザーが選択できるようにすることです。 4

2 B 3 C TABLE_NAME NUM_COLSまた者は、これらのそれぞれの最初の列は、INT主キーであると仮定する:簡単にするために、のように言ってみましょう。 表Bを選択すると、DataTableは次のようになります。 PK C1 C2 C3 1 'd' 'e' '3/10/99' 2 'g' 'h' '4/10/99'

これで、上記のデータをAdventureWorks DBのテーブルBに追加します。これをSP定義とこのSPを呼び出すC#コードの両方で実装する最も簡単な方法は何ですか? ありがとうございました!

答えて

1

私はあなたが求めていることを理解していると思います。私はあなたのデータインポートの各行がデータベースのテーブルに直接/きれいにマッピングされると仮定します。また、アプリケーションロジックがデータの各行をどこに保存するかを決定できると仮定します。

これは、.NET DataTableの各行を1つのストアドプロシージャパラメータとしてSQLに一括して渡すのではなく、SQLに依存してデータの解析とテーブルのマッピングを行うことをお勧めします。

基本的に、DataTableをループし、データの種類を判断し、各行に適切な挿入を実行します。私はこれが役立つことを願っています

+0

ありがとう、ベン。これは私には意味をなさない。あなたの前提はすべて私のコードに当てはまります。 私は、このメソッドのモデルが実装されているのを見ることができるこの優れたオンラインの例を知っていますか? – salvationishere

+0

私は "タイプ"を決定するために各データ行を解析することをお勧めします。基本的なswitch文を使用するか、Strategy Patternを使用して、行「タイプ」に基づいてデータの更新を処理します。基本的には、それぞれのケースで異なるSQLルーチンが実行されます。ストラテジーパターンの詳細については、Jeremy Millerの記事http://codebetter.com/blogs/jeremy.miller/archive/2006/04/11/142665.aspxを参照してください。がんばろう。 –