C # DataTable atualizar várias linhas

Como posso fazer várias atualizações usando datatable?

Eu encontrei esta atualização 1 linha

meu código:

public void ExportCSV(string SQLSyntax, string LeFile, bool Is_Ordre, int TypeDonne) { try { using (var connectionWrapper = new Connexion()) { var connectedConnection = connectionWrapper.GetConnected(); SqlDataAdapter da = new SqlDataAdapter(SQLSyntax, connectionWrapper.conn); DataSet ds = new DataSet(); da.Fill(ds, "Emp"); DataTable dt = ds.Tables["Emp"]; CreateCSVFile(dt, LeFile, Is_Ordre, TypeDonne); //Update all lines, it not save in Database foreach (DataRow row in dt.Rows) { row["IS_IMPORT"] = true; } } } catch (Exception excThrown) { throw new Exception(excThrown.Message); } } 

O problema é :

 foreach (DataRow row in dt.Rows) { row["IS_IMPORT"] = true; } 

não o salva no database.

Obrigado antecipadamente, Stev

Você está atualizando o valor na memory. A class DataTable não é uma exibição de sql, mas uma representação de memory. O adaptador de dados Sql copia apenas os dados.

Você precisa gravar as alterações no database. Tente isto:

 public void ExportCSV(string SQLSyntax, string LeFile, bool Is_Ordre, int TypeDonne) { try { using (var connectionWrapper = new Connexion()) { var connectedConnection = connectionWrapper.GetConnected(); SqlDataAdapter da = new SqlDataAdapter(SQLSyntax, connectionWrapper.conn); da.UpdateCommand = connectedConnection.CreateCommand(); da.UpdateCommand.XXXX = YYYY; // construct the SQL Command DataSet ds = new DataSet(); da.Fill(ds, "Emp"); DataTable dt = ds.Tables["Emp"]; CreateCSVFile(dt, LeFile, Is_Ordre, TypeDonne); //Update all lines, it not save in Database foreach (DataRow row in dt.Rows) { row["IS_IMPORT"] = true; } da.Update(dt); } } catch (Exception excThrown) { throw new Exception(excThrown.Message); } } 

Isso deve funcionar.

Você precisa primeiro definir a propriedade UpdateCommand no DataAdapter para a instrução UPDATE que será executada para atualizar uma linha no database.

Então, depois de atualizar valores no DataTable, você precisa passá-lo para DataAdapter.Update (). Isso executará o UpdateCommand para cada linha atualizada no DataTable.

Referências:

MSDN – SqlDataAdapter.Update
MSDN – SqlDataAdapter.UpdateCommand

Você terá que chamar da.Update()