powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SqlDataAdapter.Fill() не работает
17 сообщений из 17, страница 1 из 1
SqlDataAdapter.Fill() не работает
    #33571044
Armitage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторstring connect ="Persist Security Info=false;Server=mySERV;Database=myDB;Integrated Security=true";
string select = "SELECT * "+"FROM myTable";
SqlConnection mySqlconnect = new SqlConnection(connect);
SqlCommand mySqlcommand = mySqlconnect.CreateCommand();
mySqlcommand.CommandText=select;
SqlDataAdapter myAdapter = new SqlDataAdapter();
myAdapter.SelectCommand=mySqlcommand;
DataSet myDataset = new DataSet();
mySqlconnect.Open();
myAdapter.Fill(myDataset, "myTable");
DataTable myTable = myDataset.Tables["myTable"];
DataRow newRow = myTable.NewRow();
newRow["Host"] = Dns.GetHostName().ToUpper();
newRow["Best"] = 585;
myTable.Rows.Add(newRow);
myTable.AcceptChanges();
foreach (DataRow row in myTable.Rows)
{
Console.WriteLine(row["row"]);
Console.WriteLine(row["row2"]+"");
}
myAdapter.Fill(myDataset, "myTable");

mySqlconnect.Close();
Блок foreach выводит все записи и те что были и ту что добавил, но в БД ничего не добавляется. Насколько я понял за это отвечает именно myAdapter.Fill(myDataset, "myTable");
Если тоже самое делать через Insert запрс в SqlCommand.CommandText то все работает как надо
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33571268
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
myTable.AcceptChanges() выкинь, вместо него myAdapter.Update()

Fill() не добавляет в БД, а читает из нее. Все изменения в БД делаются Update-ом.

Сергей
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33571522
Armitage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторmyTable.AcceptChanges() выкинь, вместо него myAdapter.Update()
Так и сделал, терь выдает System.InvalidOperationException
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33571635
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шоб Update работал нужно у адаптера настроить UpdateCommand, DeleteCommand и InsertCommand
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33572077
Armitage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot автор]шоб Update работал нужно у адаптера настроить UpdateCommand, DeleteCommand и InsertCommand[quot автор]
мне кажется это не то при таком подходе DataSet ненужен становится. Мне интересно именно его использование, т.е. загружаем в него таблицу, правим ее а потом это все обратно в БД
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33572446
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Armitage
Так и сделал, терь выдает System.InvalidOperationException

Привидите StackTrace

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33573022
Armitage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПривидите StackTrace

эм... это что такое ?
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33573966
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Armitage
эм... это что такое ?

вообще то RTFM. Чтобы понять можете поискать по .NET форумам по строке: StackTrace

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33574739
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Armitage[quot автор]шоб Update работал нужно у адаптера настроить UpdateCommand, DeleteCommand и InsertCommand автор
мне кажется это не то при таком подходе DataSet ненужен становится. Мне интересно именно его использование, т.е. загружаем в него таблицу, правим ее а потом это все обратно в БД
Вот "обратно" как раз с помощью UpdateCommand, DeleteCommand и InsertCommand. До этого все данные - только в DataSet. А вообще, действительно, RTFM.
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33574831
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эрмитажу:
DataSet в .NET - это не Адовский рекордсет,
DataSet - отсоединенное хранилище и обновлять БД в СУБД он сам не умеет. (Что в общем-то хорошо)
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33575407
Armitage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо, проблема решилась строчками:
SqlCommandBuilder builder = new SqlCommandBuilder(myAdapter);
myAdapter.Update(myDataset, "myTable");

Р.S.
сорри что немного не вьехал в тему, пал жертвой непраильного мануала :)
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33575875
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учтите, что SqlCommandBuilder - last resort для начинающих, работает далеко не для всех запросов.
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33588077
Un1c0rn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне просто интересно, почему метод Update сохраняет в бд, тока когда в DataTable не былизафиксированы изменения, тоесть если было использовано myDataTable.AcceptChanges(), то UpDate не сохраняет изменения в бд. Может кто подскажет? И зачем тогда вообще нужно фиксировать изменения, если не чего не работает....
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33588747
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При изменениях в DataSet, грубо говоря, записи помечаются метками (ins/del/upd). adapter.Update() для каждой записи с меткой вызывает соответствующий command. Так изменения переносятся в БД.

AcceptChanges ликвидирует все метки превращая Set в "неизмененный". Соответственно после вызова AcceptChanges для adapter.Update() не будет работы.
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33589705
Un1c0rn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могли бы вы превести пример, зачем надо вообще фиксировать изменения, я лично мало смысла вижу в этом......
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33589995
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например, если у вас нет СУБД. А DataSet заполняется при загрузке программы из XML-файла, а при закрытии, XML-файл записывается из DataSet.

Если у вас пользователь отредактировал несколько записей и нажал "Применить" - вызываем AcceptChanges и изменения применяются.
Если он передумал и нажимает "Откат", то DataSet позволяет откатить все последние изменения, если не был вызван AcceptChanges.


Читайте книги.
...
Рейтинг: 0 / 0
SqlDataAdapter.Fill() не работает
    #33590523
Un1c0rn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо:) Все очень доступно и просто:)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SqlDataAdapter.Fill() не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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