2011-06-30 12 views
1

2次元配列をSQL文に変換せずに直接データベース(SQL Server)に移動することはどうですか?C#とSQL Server:配列をSQL Serverに直接移動

vb6.0に何らかの直接接続があったことは知っていますが、それがどのように行われたのか、それがまだ可能なのか覚えていません。

+0

可能重複(http://stackoverflow.com/questions/1030848/how-to-pass-user-defined-table-type [C#でのストアドProceduredパラメータとしてユーザー定義テーブル型を渡す方法] -as-stored-procedured-parameter-in-c) – GSerg

+0

私はそれを調べます。それは私が考えていたものではありません。 – ralph

+0

あなたの質問が複数の方法で理解できるときは、それはあなたが得るものです:) – GSerg

答えて

0

VB6では、レコードセットを作成し、行を挿入して.Updateを呼び出すことで、明示的なINSERTステートメントを避けることができます。 CommandモードがadCmdTableDirectの場合、これは「直接接続」です。

ADO.NETでもそうすることができますが、Linq To SqlやEntity Frameworkなど、さまざまな方法があります。 VB6のような単純なスタイルのバニラが必要な場合は、おそらくDataAdapter.Update methodでしょう。

using (System.Data.SqlClient.SqlConnection c = new System.Data.SqlClient.SqlConnection("Data Source=...")) 
{ 
    using (System.Data.SqlClient.SqlDataAdapter a = new System.Data.SqlClient.SqlDataAdapter("select * from atable;", c)) 
    { 
     using (System.Data.SqlClient.SqlCommandBuilder b = new System.Data.SqlClient.SqlCommandBuilder(a)) 
     { 
      using (DataTable t = new DataTable("atable")) 
      { 
       a.FillSchema(t, SchemaType.Source); 

       t.Rows.Add(1, "foo"); 
       t.Rows.Add(2, "bar"); 

       a.Update(t); 

      } 
     } 
    } 
} 
+0

ありがとう、それは右のように聞こえます! – ralph

+0

@ralphナー、間違っています。すぐに編集されます。 – GSerg

+0

それは正しい方向に私を指摘しました。あなたのコードはさらに助けになります。 – ralph