Как обновить Dataatable в C # с кодом? - PullRequest
2 голосов
/ 23 сентября 2010

Я хочу переместить данные из базы данных в другую базу данных.

Я пишу 2 функции. функция 1: я заполняю таблицу из database1 в datatable и назвал это DT

в функции 2 я заполняю таблицу в database2 Dt и называю ее dtnull

Я обновляю dtnull в базе данных 2

function 2:
{
  SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = new SqlCommand();
            sda.SelectCommand.Connection = objconn;
            sda.SelectCommand.CommandText = "Select * from " + TableName + "";
            DataTable dtnull = new DataTable();
            sda.Fill(dtnull);
            SqlCommandBuilder Builder = new SqlCommandBuilder();
            Builder.DataAdapter = sda;
            Builder.ConflictOption = ConflictOption.OverwriteChanges;
            string insertCommandSql = Builder.GetInsertCommand(true).CommandText;
            foreach (DataRow Row in Dt.Rows)
            {
                dtnull.ImportRow(Row);

            }
           sda.Fill(dtnull);
           sda.Update(dtnull);
}

Ответы [ 4 ]

0 голосов
/ 14 октября 2010

Многое осталось необъяснимым. Например, исходная и целевая таблицы имеют одинаковую структуру столбцов?

Можете ли вы увидеть обе базы данных с одного и того же SqlConnection (т.е. они находятся на одной машине)? Если это так, вы можете сделать все это одним оператором SQL. Предполагая, что вы хотите скопировать данные из таблицы T1 в базе данных DB1 в таблицу T2 в базе данных DB2, вы должны написать

вставить DB2.dbo.T2 выберите * из DB1.dbo.T1

Исключение при использовании ExecuteNonQuery.

Если для баз данных требуются разные SqlConnections, я бы считывал данные из источника с помощью SqlDataReader и обновлял целевой ряд за строкой. Я думаю, что это будет быстрее, чем использование SqlDataAdapter и DataTable, так как они требуют больше структуры и памяти. Команда Обновить записывает данные построчно в любом событии.

0 голосов
/ 29 сентября 2010

Если это всего лишь несколько таблиц, я думаю, что вы можете

  1. щелкнуть правой кнопкой мыши нужную таблицу в SQL Management studio
  2. сгенерировать скрипт создания в буфер обмена
  3. выполнить его
  4. Вернуться к исходной таблице и выбрать все строки
  5. скопировать их
  6. перейти к новой таблице и вставить

Нет необходимости делать это сложнее, чем есть.

0 голосов
/ 29 сентября 2010

Вам не нужно использовать обновление для этого.Вы можете попробовать это решение, это может быть самый простой способ сделать это.

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

Если вы хотите решение LINQ, я могу предоставить вам одно.

0 голосов
/ 29 сентября 2010

Если вам нужно скопировать базу данных SQL, просто создайте ее резервную копию и восстановите.В качестве альтернативы используйте услуги DTS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...