2012-02-08 12 views
0

データベースに保存する必要がある約012 フィールド列(1行)を持つ巨大なフォームがあります。SQL Serverに多数の列を含む単一の行を挿入する

ADO.NETを使用してこれらの多くの列をデータベースに挿入する最良の方法は何ですか?

フィールドの数のためにクエリが非常に大きくなるため、このような挿入文を使用する必要はないと思います。

conn.Open(); 
string insertString = @" 
    insert into Categories (CategoryName, Description) 
    values ('Miscellaneous', 'Whatever doesn''t fit elsewhere')"; 

SqlCommand cmd = new SqlCommand(insertString, conn); 
cmd.ExecuteNonQuery(); 

私は一時ファイルにデータをダンプして、データテーブルにそれらを追加し、SqlBulkCopyを使用してデータベースに挿入すると考えます。

良いアプローチがありますか?このような状況にどう対応しますか?

+3

テーブルにも約110個のフィールドがある場合は、申し訳ありませんが間違っています。リファクタリング/いくつかのテーブルに正規化し、複数の関連する 'INSERT'ステートメントを実行します。 – Yuck

+0

一度に何行追加しますか? 110列の単列ですか、それとも一度に多くの行を話していますか? –

+0

@Yuck:私はそれを助けることはできません。私はそれをするのに時間がかかりたいと思っています。しかし、それは残念ながら私が現時点で制御できるものではありません。 – Animesh

答えて

1

この数の列を挿入するのに便利なショートカットはありませんが、パラメータを使用するとデバッグ時間が短縮される可能性があります。パラメータを使用することで、文字列や型変換でアポストロフィが好きなことを心配する必要はありません。ここにサンプルがあります:

public static void TryThis() 
{ 
    try 
    { 
    using (SqlConnection con = new SqlConnection()) 
    { 
     con.ConnectionString = "YourConnectionString"; 
     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "INSERT INTO Categories (CategoryName, Description) VALUES (@CategoryName, @Description)"; 
     cmd.Parameters.AddWithValue("CategoryName", "Miscellaneous"); 
     cmd.Parameters.AddWithValue("Description", "Whatever doesn't fit elsewhere"); 
    } 
    } 
    catch (Exception ex) 
    { 
    throw new Exception(ex.Message); 
    } 
} 
関連する問題