| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Базы данных под .NET > Нет изменений в базе |
| Автор: stashe 20.5.2008, 19:00 |
| не матюкайтесь, решения по форуму не нашел, ситуация следующая Использую DataSet, BindingSource и TableAdapter (база Access), не использую никаких комманд, ДатаАдаптеров и т.д. все делал только дизайнером. После изменения таблицы (добавления Row) вызываю запись в БД, ничего не происходит, не матюкается, но и не пишет.. private void WriteToDataBase() { requestsTableAdapter.Update(cennye_bumagiDataSet); cennye_bumagiDataSet.AcceptChanges(); cennye_bumagiDataSet.Tables["Requests"].AcceptChanges(); } ?????? |
| Автор: stashe 20.5.2008, 19:35 | ||
| к примеру удаление cennye_bumagiDataSet.Tables["Trades"].Rows.RemoveAt(dataGridView1.CurrentRow.Index); или добавление ряда
|
| Автор: informatik 20.5.2008, 20:48 |
| С базой Access при работе через мастер есть проблемка... Примерно выглядит это так: Кагда создается подключение мастер запрашивает копировать файл БД или нет. Если сказать да то файл копируется в папку проекта и строка подключения имеет путь именно к этому файлу и..... если запускать Debug то данный файл БД копируется в папку проги, но работа то идет именно с тем файлом который находится в паке проекта т.к. строка поключения имеет именно такой путь.. Если физически запустить экзешник, т.е. добраться до папки Debug или Release то попробовав поработать все будет нормально, но при перекомпиляции файл БД заменится файлом БД который лежит в папке проекта, а он пустой... что то типа того.... |
| Автор: stashe 21.5.2008, 09:07 |
| Не, не оно, пробовал. К тому же я даже не перезапуская программу вижу что изменения не сохраняются, закрывая и открывая заново только таблицу а не программу. |
| Автор: stashe 24.5.2008, 09:45 |
| Up! |
| Автор: stashe 28.5.2008, 10:03 |
| Неужто никто не сталкивался?? |
| Автор: Magnifico 28.5.2008, 20:38 | ||
| вероятно для адаптера InsertCommand DeleteCommand не сгенерирован или сгенерирован неправильно попрбуй так
|
| Автор: stashe 30.5.2008, 17:19 |
| Magnifico, спасибо большое, позже попробую,....люди, даже если кто-то не знает, высказывайте предположения, буду пробовать все варианты, т.к. и понятия не имею в чем может быть проблема, с БД не работал никогда в жизни Спсибо за участие! |
| Автор: -Mikle- 31.5.2008, 01:08 | ||||
по добавлению:
по удалению:
А еще имей ввиду, что для каждой таблицы находящейся в DataSet нужно использовать родной TableAdapter. Когда ты передаешь DataSet в TableAdapter.Update, то записывается не весь DataSet, а только та таблица из DataSet, о которой знает конкретный TableAdapter. Другими словами, если в датасете лежит три таблицы, то нужно вызвать три метода Update у соответствующих TableAdapter. Пробуй, если что пиши. |
| Автор: mindyourmind 1.6.2008, 23:16 |
| Аналогичная проблема! Пытаюсь сделать просто через ExecuteNonQuery, база сама не в папке проекта... Селект делается, инсерт - нет 1 из вариантов кода (кажется, подобное предлагали): string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\FashionShop.mdb"; OleDbConnection conn = new OleDbConnection(connectionString); conn.Open(); using (OleDbTransaction trans = conn.BeginTransaction()) { try { string sql1 = "INSERT INTO Чек (Номер_дисконту) Values (4);"; OleDbCommand command1 = new OleDbCommand(sql1, conn, trans); command1.ExecuteNonQuery(); string sql2 = "INSERT INTO Чек (Номер_дисконту) Values (5);"; OleDbCommand command2 = new OleDbCommand(sql2, conn, trans); command2.ExecuteNonQuery(); trans.Commit(); } catch (OleDbException e1) { trans.Rollback(); } } conn.Close(); |
| Автор: stashe 6.6.2008, 19:28 | ||
| -Mikle- , по поводу добавления помогло, работает )))))))))) по удалению эксепшн на нулл, разберусь. можешь объяснить почему так? писал с букваря и довольно авторитетного (C# для професионалов 2005). Спасибо за помощь! Добавлено @ 19:40 Добавление работает, а вот изменение нет(т.е. не добавляю новую, а изменяю текущую)..... "Update requires a valid UpdateCommand when passed DataRow collection with modified rows." Добавлено @ 19:41
|
| Автор: stashe 6.6.2008, 19:57 | ||
При удалении
Update requires a valid DeleteCommand when passed DataRow collection with deleted rows. если без второй сторки то изменения не записываются Добавлено через 8 минут и 24 секунды Magnifico, в твоем примере неверные аргументы в первой строчке Error 14 The best overloaded method match for 'System.Data.OleDb.OleDbCommandBuilder.OleDbCommandBuilder(System.Data.OleDb.OleDbDataAdapter)' has some invalid arguments у меня TableAdapter |
| Автор: stashe 7.6.2008, 12:24 | ||
Решил вроде, теперь проблема в редактировании существующей строки...
т.е. если r = cennye_bumagiDataSet.Tables["Requests"].NewRow(); то Update работает, если r = cennye_bumagiDataSet.Tables["Requests"].Rows[dataGridView2.CurrentRow.Index] матюгаетяся на Command text was not set for the command object. |