powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не срабатывает SqlDataAdapter.Update
2 сообщений из 2, страница 1 из 1
Не срабатывает SqlDataAdapter.Update
    #37559504
ZooY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Достаю данные из Excel в DataSet:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
OleDbConnection oleCon = new OleDbConnection(excelConnectionString);
oleCon.Open();
var query = string.Format("SELECT * FROM [{0}$]", worksheetName);
using (var cmd = new OleDbCommand(query, oleCon))
{
    using (var da = new OleDbDataAdapter(cmd))
    {
        da.Fill(ds, worksheetName);
    }
}



Потом пытаюсь данные из этого DataSet залить в БД SQL вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using (var con = new SqlConnection(sqlConnectionString))
{
	con.Open();
	using (var insertCmd = con.CreateCommand())
	{
		insertCmd.CommandText = "INSERT INTO Names (Number, Name) VALUES (@Number, @Name)";
		insertCmd.Parameters.Add("Number", SqlDbType.NVarChar, 100, "Номер договора");
		insertCmd.Parameters.Add("Name", SqlDbType.NVarChar, 100, "Клиент");
		using (var adapter = new SqlDataAdapter())
		{
			adapter.InsertCommand = insertCmd;
			adapter.Update(ds, worksheetName);
		}
	}
	con.Close();
}



Но почему то данные в SQL не попадают и никаких ошибок при этом нет.
Если вручную создать DataTable и скормить его методу Update то данные в SQL попадают.
не могу понять в чем проблема. Возможно данные в DataSet как то помечены как не обновленные и поэтому DataAdapter не считает нужным переносить их в базу. Тогда возникает вопрос как массово пометить данные как новые, чтобы они все перенеслись в базу.
...
Рейтинг: 0 / 0
Не срабатывает SqlDataAdapter.Update
    #37559523
ZooY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я уже сам все понял :)
Нужно было всего лишь добавить свойство AcceptChangesDuringFill со значением false при получении данных из Excel-файла. Т.е. первый кусок кода должен выглядеть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
OleDbConnection oleCon = new OleDbConnection(excelConnectionString);
oleCon.Open();
var query = string.Format("SELECT * FROM [{0}$]", worksheetName);
using (var cmd = new OleDbCommand(query, oleCon))
{
    using (var da = new OleDbDataAdapter(cmd))
    {
        da.AcceptChangesDuringFill = false; // <-- не хватало вот этого
        da.Fill(ds, worksheetName);
    }
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Не срабатывает SqlDataAdapter.Update
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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