C # DataTable Обновление нескольких строк - PullRequest
1 голос
/ 13 января 2012

как я могу сделать несколько обновлений, используя datatable?

Я нашел это Обновление 1 строки

мой код:

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



        }

проблема:

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

это не сохранить его в базе данных.

Заранее спасибо, Стеф

Ответы [ 3 ]

4 голосов
/ 13 января 2012

Сначала необходимо установить для свойства UpdateCommand в DataAdapter оператор UPDATE, который будет выполнен для обновления строки в базе данных.

Затем, после обновления значений в DataTable, вам необходимо передать егов DataAdapter.Update ().Затем он выполнит команду UpdateCommand для каждой обновленной строки в таблице данных.

Ссылки:

MSDN - SqlDataAdapter.Update MSDN - SqlDataAdapter.UpdateCommand

3 голосов
/ 13 января 2012

Вы обновляете значение в памяти. Класс DataTable - это не представление SQL, а представление в памяти. Адаптер данных Sql только копирует данные.

Вы должны записать изменения в БД. Попробуйте это:

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

Это должно работать.

0 голосов
/ 13 января 2012

Вам нужно будет позвонить da.Update()

...