2012-04-20 3 views
0

У меня есть четыре таблицы coloum в базе данных SQL. Информация для первых трех колонок предоставляется другим источником. По умолчанию для coloum 4 установлено значение null.C# записывать данные datagridview в таблицу SQL

Я тогда форма выигрыша с DataTable, который заполняет с информацией из SQL tabase, используя следующий код:

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(); 

Теперь, когда работает отлично в получении моих данных.

Пользователь может вносить изменения в нулевые значения в столбце 4.

Как я могу легко написать эти изменения из DataTable обратно в таблицу SQL?

Другими словами, как только на экране datatable есть дополнительные значения, как я могу затем сохранить обновленную информацию обратно в SQL-данные, из которых она была первоначально получена?

Спасибо.

+0

Что вы означает базу данных обратно в SQL таблицу? (закрыть соединение, закрыть считыватель после его использования) –

ответ

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

2 варианта, с или без TableAdapter.

Я бы рекомендовал read this in MSDN для TableAdapter

Они используют BindingSources тоже, которые являются превосходными компонентами, простой в использовании.

Без таблицыAdapter, read this, часть «Обновление записей с использованием объектов Command».

+0

4-й coloum уже существует, как указано, поэтому я могу просто использовать таблицу atapater, и она должна записать информацию таблицы данных обратно в базу данных sql? – tripbrock

+0

@tripbrock: отредактировал мой ответ. – LaGrandMere

Смежные вопросы