2013-11-14 1 views
0

У меня есть DataTable с новыми записями, и я хочу добавить их в существующую базу данных.Обновление базы данных SQL Server с помощью SqlDataAdapter

Поэтому я создаю SqlDataAdapter и заполняю вторую таблицу, затем я объединять две таблицы и обновлять базу данных, но ничего не происходит, возвращаемое значение равно 0, база данных остается неизменной.

Вот мой код:

DBManager.DBDestinationConnect(textBox10.Text, textBox9.Text, textBox8.Text, textBox7.Text, ref destinationConnection); 
//DBManager is a Class, to connect with the database 
CategoryAdapterBackup = new SqlDataAdapter("SELECT*FROM " + tablename, destinationConnection); 

CategoryTableBackup = new DataTable(); 
CategoryAdapterBackup.Fill(CategoryTableBackup); 
CategoryTableBackup.Merge(SubTable); 

//SubTable is the DataTable with the new entries 
CategoryAdapterBackup.Update(CategoryTableBackup); 

ответ

0

Я имею проблему рассуждая ваши намерения с этим кодом. Почему бы просто не использовать sqlbulkcopy для SubTable? Это добавит содержимое SubTable в таблицу SQL-адреса получателя. Если вы боитесь дубликатов, тогда вставьте содержимое таблицы SubTable в Temp в БД и, возможно, используйте Join, чтобы вставлять строки в таблицу назначения, где не существует строка в таблице назначения.

+1

«sqlbulkcopy» - это путь , Я просто объединил 2 таблицы и написал разницу в другую таблицу. Таким образом, я могу использовать 'sqlbulkcopy' без дубликатов и без использования Temp в БД. – sintexx

0

Попробуйте с CategoryAdapterBackup.Flush() или DBManager.Flush() также, может быть хорошей идеей заменить SELECT*FROM на SELECT * FROM (с пробелами)

+0

«SqlDataAdapter» не имеет определения для Flush, а «DBManager» тоже не включен, потому что это мой класс, содержащий только две функции для подключения к различным базам данных. – sintexx