2012-04-20 6 views
0

SQLデータベースに4つのcoloumテーブルがあります。最初の3つの列の情報は別のソースから提供されます。 coloum 4はデフォルトでnullに設定されています。C#SQLテーブルにdatagridviewデータを書き込む

public DataTable populateFormList() 
    { 


      SqlConnection con = new SqlConnection(Properties.Settings.Default.sqlConnectionString); 
      SqlCommand cmd = new SqlCommand("SELECT * FROM of_formlist_raw", con); 
      con.Open(); 

      SqlDataReader reader = cmd.ExecuteReader(); 

      DataTable dt = new DataTable(); 
      dt.Load(reader); 

      return dt; 
} 

datagridview2.DataSource = populateFormList(); 
datagridview2.Refresh(); 

今私のデータを取得するには正常に動作します:

は、私は、次のコードを使用して、SQL tabaseからの情報を移入したDataTableとWinフォームを持っています。

ユーザーは、その後どのように私は簡単に戻ってSQLテーブルにデータテーブルから、これらの変更を書き込むことができ

列4のnull値に変更を加えることができますか?

つまり、画面上のデータテーブルに追加値が設定されていれば、元のSQLデータに更新された情報を戻す方法はありますか?

ありがとうございました。

+0

あなたが戻って、SQLテーブルにデータベースを意味しますか? (close connection、close reader using) –

答えて

2

はこのような何かを試してみて、ちょうどデータテーブルとして(DataTable)datagridview2.DataSourceを渡す:

private static void BulkInsertToSQL(DataTable dt, string tableName) 
     { 

       using (SqlConnection con = new SqlConnection(_DB)) 
       { 
        SqlBulkCopy sbc = new SqlBulkCopy(con); 
        sbc.DestinationTableName = tableName; 

        //if your DB col names don’t match your data table column names 100% 
        //then relate the source data table column names with the destination DB cols 
        sbc.ColumnMappings.Add("DBAttributeName1", "DTColumnName1"); 
        sbc.ColumnMappings.Add("DBAttributeName2", "DTColumnName2"); 
        sbc.ColumnMappings.Add("DBAttributeName3", "DTColumnName3"); 
        sbc.ColumnMappings.Add("DBAttributeName4", "DTColumnName4"); 

        con.Open(); 

        sbc.WriteToServer(dt); 
        con.Close(); 
       } 


     } 
0

TableAdapterの有無にかかわらず、2つのオプション。

が、私は優れた成分である、TableAdapterの

彼らはあまりにもBindingSourcesを使用しているためread this in MSDNに推薦する、使いやすいです。

TableAdapterなし、read this、 "コマンドオブジェクトを使用したレコードの更新"の部分。

+0

4番目のcoloumはすでに記述されているので、テーブルatapaterを使用するだけで、データテーブル情報をSQLデータベースに書き戻す必要がありますか? – tripbrock

+0

@tripbrock:私の答えを編集しました。 – LaGrandMere

関連する問題