powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Обновление БД после Merge()
1 сообщений из 1, страница 1 из 1
Обновление БД после Merge()
    #36321398
DioiD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть БД, состоящая из одной таблички. База FoxPro, файлик .dbf
Одна, форма, все функции и контролы на ней.
Беру датасет, заполняю его через адаптер из этой таблички и нужные колонки вывожу в datagridview:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ds1 = new DataSet();
oleDbConnection1 = new System.Data.OleDb.OleDbConnection(); //коннект к .dbf
oleDbConnection1.ConnectionString = String.Format(vfpOleDbConString, Application.StartupPath); //получаем кон стринг для нашего соединения. Путь к файлу .dbf задается как путь исполняемого файла
 oleDbConnection1.Open(); //открываем подключение
cmdtest = new OleDbCommand(SelectAll, oleDbConnection1);
adapter = new OleDbDataAdapter(cmdtest);            
adapter.SelectCommand = cmdtest;

adapter.Fill(ds1, "Table");

Далее задаю остальные команды адаптера и их параметры. Все, табличка и датасет готовы. На форме можно данные менять, добавлять, удалять. Все это замечательно заносится в базу.

Дальше мне надо открыть другой файлик .dbf, считать оттуда все и объеденить с имеющейся таблицей, замещая или добавляя попутно строки. Делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 OpenFileDialog openFile = new OpenFileDialog();
 openFile.Filter = "(*.dbf)|*.dbf";
openFile.ShowDialog();
string str = openFile.FileName;
oleDbConnection1.ConnectionString = String.Format(vfpOleDbConString, str); //получаем кон стринг для нашего соединения. Путь к файлу .dbf задается как путь исполняемого файла
oleDbConnection1.Open();
DataSet changeDataSet = ds1.GetChanges(DataRowState.Added|DataRowState.Modified|DataRowState.Deleted);
cmdtest = new OleDbCommand("select * from vpd1.dbf", oleDbConnection1);
OleDbDataAdapter adapter1 = new OleDbDataAdapter(cmdtest);
DataTable dt = new DataTable();
dt.TableName = "Table";
adapter1.Fill(dt);
dt.AcceptChanges();
changeDataSet.Tables[0].Merge(dt);
//ds1.Merge(changeDataSet);
oleDbConnection1.Close();

В общем как я там только не мержил, и без отделения изменений в отдельный датасет, и с ними, и со статусами и без статусов, в любом случае получаю новый датасет, в котором есть все строки из обеих таблиц. Они выводятся в датагридвью, по ним делается поиск, фильтры, продолжают добавляться новые строки. Но как только делаю апдейт исходной БД, нифига туда не заносится, кроме вручную добавленных строк.
Помогите, кто чем может!
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Обновление БД после Merge()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]