Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
1

Удаление строки в mdb напрямую (без DataGrid)

02.05.2017, 14:50. Показов 454. Ответов 14
Метки нет (Все метки)

Visual C#
Проблема такая, работаю с базой данных mdb напрямую (Без DataGreed).
Мне надо удалить строку из базы, номер берем в переменной.
Как удалить с помощью: Tables[0].Rows[nomer].Delete(); ?
нужно удалить по порядковому номеру строки.

Добавлено через 27 минут
Пишу так:
C#
1
2
3
4
5
6
7
8
9
10
11
 OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=base.mdb");
               
             
                con.Open();
                OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM table", con);
                //OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
                DataSet ds = new DataSet();
                da.Fill(ds, "table");
                ds.Tables[0].Rows[nomer].Delete();
                da.Update(ds, "table");
                con.Close();
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2017, 14:50
Ответы с готовыми решениями:

Удаление строки из datagrid
Ребят, помогите, начал разбираться в Wpf, на ваял код подключения к базе(корявый правда), помогите...

Удаление строки из DataGrid
Есть ДатаГрид забинденный на ОбсерваблКолекшн. При выделении пользователем строки и нажатием...

Удаление строки из dataGrid
Подскажите как реализовать с помощью кнопки удаление строки из таблицы, а также скажите в чем...

Удаление и добавление выбранной строки DataGrid
Здравствуйте. Возник вопрос, как из одного datagrid ВЫДЕЛЕННУЮ строку перенести в другой, но при...

14
613 / 506 / 316
Регистрация: 20.05.2015
Сообщений: 1,422
03.05.2017, 04:37 2
Вообще правильнее адаптер объявлять глобально
Не уверен что получится, но можно так попробовать:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
            OleDbDataAdapter da = new OleDbDataAdapter();
            SqlCommand cmd = new SqlCommand("SELECT * FROM table", con);
            da.SelectCommand = cmd;
            SqlCommandBuilder scb = new SqlCommandBuilder(da);
            da.InsertCommand = scb.GetInsertCommand();
            da.DeleteCommand = scb.GetDeleteCommand();
            da.UpdateCommand = scb.GetUpdateCommand();
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
03.05.2017, 09:00  [ТС] 3
Не работает.
Чё-то я ничего не понял, SqlCommand вроде для sql сервера. А у меня просто не подключенная к среде база access.
Мне возможно просто sql запрос надо правильно сформировать, не шарю в sqle.

Добавлено через 9 минут
Или я не так понял
0
1516 / 1081 / 151
Регистрация: 23.07.2010
Сообщений: 5,963
03.05.2017, 09:10 4
https://www.connectionstrings.com/access/
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
03.05.2017, 09:19  [ТС] 5
ссылка на варианты подключения к базе, это к чему?
0
1516 / 1081 / 151
Регистрация: 23.07.2010
Сообщений: 5,963
03.05.2017, 10:57 6
Цитата Сообщение от che1212 Посмотреть сообщение
SqlCommand вроде для sql сервера.
вот к чему. А OleDBCommand вполне себе можно пользовать
0
701 / 557 / 248
Регистрация: 04.08.2015
Сообщений: 1,534
03.05.2017, 11:27 7
che1212, раскомментируйте эту строку
Цитата Сообщение от che1212 Посмотреть сообщение
C#
1
//OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
и возможно, что ваш код заработает.
Цитата Сообщение от che1212 Посмотреть сообщение
C#
1
ds.Tables[0].Rows[nomer].Delete();
Учитывая, что nomer строки вы получаете до того, как происходит выборка из БД, вы можете удалить совсем не ту строку, которую хотели.
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
03.05.2017, 12:16  [ТС] 8
до комментария она тоже не работала

Добавлено через 16 минут
до комментария она тоже не работала
писала:
Нарушение параллелизма: DeleteCommand затронула 0 из ожидаемых 1 записей.
0
1516 / 1081 / 151
Регистрация: 23.07.2010
Сообщений: 5,963
03.05.2017, 12:33 9
Цитата Сообщение от che1212 Посмотреть сообщение
Нарушение параллелизма: DeleteCommand затронула 0 из ожидаемых 1 записей.
ибо нечего пользовать всякие адаптеры. Пользуй прямые запросы и будет тебе счастие
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
03.05.2017, 12:34  [ТС] 10
Я бы рад, не знаю как правильно запрос сформировать
0
701 / 557 / 248
Регистрация: 04.08.2015
Сообщений: 1,534
03.05.2017, 12:42 11
che1212, а сейчас не ругается? Ведь у вас DeleteCommand вообще отсутствует.
Ошибки надо исправлять, а не комментировать строки, где они возникают.
Возможные причины, по которым не сформировался DeleteCommand:
В таблице отсутствует первичный ключ.
Название одного из столбцов является зарезервированным словом Access.
0
1516 / 1081 / 151
Регистрация: 23.07.2010
Сообщений: 5,963
03.05.2017, 12:49 12
Igr_ok,
прочтите Удаление строки в mdb напрямую (без DataGrid)
ибо это зло я в свое время так и не победил
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
03.05.2017, 14:04  [ТС] 13
Igr_ok,
я её потом закомментировал и на неё он не ругался.
он ругается на эту строку:
da.Update(ds, "table");
Нарушение параллелизма: DeleteCommand затронула 0 из ожидаемых 1 записей.

Добавлено через 1 час 14 минут
pincet, какой тут можно сформировать запрос, я могу запросом удалить только все строки
0
1516 / 1081 / 151
Регистрация: 23.07.2010
Сообщений: 5,963
03.05.2017, 14:27 14
предложение WHERE еще не осилил?
T-SQL
1
delete MyPleasure where color=3
0
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 12
04.05.2017, 11:11  [ТС] 15
Всем спасибо я решил проблему через запрос.
nomer теперь string
прога ищет в нужной строке значение поля name и удаляет
C#
1
2
3
4
5
6
7
                    OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=base.mdb");
                    OleDbDataAdapter da = new OleDbDataAdapter("DELETE FROM table WHERE name='" + nomer + "'", con);
                    con.Open();
                    OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "table");
                    con.Close();
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2017, 11:11

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Удаление строки из MySQL через WPF DataGrid
Здравствуйте, есть проблема, знаю как удалить строку из DataGrid, она удаляет из DataGrid, но не...

Удаление строки в DataGrid двойным нажатием на мышку (исправить ошибку)
удаление строки в DataGrid двойным нажатием на мышку private void DgDic_MouseDoubleClick(object...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.