Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167

Как при добавлении новой строки в базу увеличить значение поля id на 1

13.05.2014, 08:18. Показов 4378. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, не могу сообразить как впихнуть в этот метод добавления новой строки, увеличение значения поля id в таблице на единицу. Но обратиться к DatаdGridView не могу, т.к. он прописан в другом классе
C#
1
2
3
4
5
6
7
8
9
10
11
private void AddProduct()
        {
            int i;
            if(тут нужно прописать какое-то условие, что если Form2.i = Form1.DataGridView.DataTable.ID)
            {
            i = i++;
            }
            string txtQuery = "insert into NameProduct values ('"+i"','" + NameProduct.Text + "','1','1','1','1')";
            Common.ExecuteQuery(txtQuery);
            
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2014, 08:18
Ответы с готовыми решениями:

При добавлении в DataTable новой строки и изменении внешнего ключа возникает конфликт при сохранении в базу
У меня есть DataSet с двумя таблицами (назовём их Т1 и Т2). В Т1 есть внешний ключ на таблицу Т2. Я добавляю в Т2 новую строку, а в Т1...

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

При добавлении новой строки в datagridview увеличивать значение столбца на единицу
Добрый день. Нужна небольшая помощь. Работаю с компонентом datagridview, нужно, чтобы при автоматическом добавлении новой строки, значение...

13
 Аватар для Cupko
658 / 595 / 171
Регистрация: 17.07.2012
Сообщений: 1,682
Записей в блоге: 1
13.05.2014, 08:36
Посылайте отдельный запрос с MAX(ID) и прибавляйте к полученному значению единицу.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.05.2014, 08:36
Подробнее опиши, что за i++. Ты текущую запись DataGridView хочешь получить или что?
0
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
13.05.2014, 08:48
Используй int ret = ExecuteNonQuery(MyCommand);
0
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,138
Записей в блоге: 1
13.05.2014, 10:42
GaS_597, не совсем понятно, зачем вам записывать поле id в таблице. Этим должна заниматься СУБД.
0
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167
13.05.2014, 10:48  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Подробнее опиши, что за i++. Ты текущую запись DataGridView хочешь получить или что?
Наоборот я делаю insert в таблицу. i - это поле ID в таблице. Мне нужно, чтобы ID в каждой следующей строке прибавлялся на 1, т.е. 1, 2, 3, 4 и т.д.
Цитата Сообщение от NewOrdered Посмотреть сообщение
GaS_597, не совсем понятно, зачем вам записывать поле id в таблице. Этим должна заниматься СУБД.
БД SQLite не увеличивает счетчик.
0
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,138
Записей в блоге: 1
13.05.2014, 10:56
GaS_597,
первый вопрос в FAQ
http://www.sqlite.org/faq.html#q1

(1) How do I create an AUTOINCREMENT field.

Short answer: A column declared INTEGER PRIMARY KEY will autoincrement.
1
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167
13.05.2014, 12:33  [ТС]
Цитата Сообщение от NewOrdered Посмотреть сообщение
GaS_597,
первый вопрос в FAQ
http://www.sqlite.org/faq.html#q1
Спасибо! Переделал таблицу и все заработало. Все гениально и просто!

Добавлено через 35 минут
Не все заработало... При удалении строки теперь ругается "Input string was not in a correct format"
В таблице ID был int, а сейчас INTEGER. Вроде это же одно и то же?...

C#
1
2
3
4
5
6
7
8
//Удаление выделенной строки
        private void btnDel_Click(object sender, EventArgs e)
        {
            id = Convert.ToInt32(Common.DT.Rows[dgv.CurrentRow.Index][id]);
            Common.DelProduct(id);
            Common.Load_Form();
            Form1_Update();
        }
C#
1
2
3
4
5
6
7
8
//Удаление записей
        public static void DelProduct(int id)
        {
            Connection();
            string txtQuery = "delete from NameProduct where id="+id;
            Common.ExecuteQuery(txtQuery);
            Disconnect();
        }
0
478 / 241 / 74
Регистрация: 25.05.2012
Сообщений: 1,138
Записей в блоге: 1
13.05.2014, 12:42
GaS_597, приведите весь текст исключения

и какое у вас значение в отладчике на этой строке

Convert.ToInt32(Common.DT.Rows[dgv.CurrentRow.Index][id])
?
0
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167
14.05.2014, 05:40  [ТС]
Нашел в чем косяк, но решения нет...
В общем, когда в DataGridView делается "select ID, NameProduct, Protein, Fat, Carb, Calories from NameProduct", то все прекрасно работает. Как только я убираю из запроса поле ID, то студия отказывается удалять записи из таблицы и ругается "Column 'ID' does not belong to table Table.". Как можно обойти этот момент?

Класс Form1
C#
1
2
3
4
5
6
7
8
//Удаление выделенной строки
        private void btnDel_Click(object sender, EventArgs e)
        {
            i = Convert.ToInt32(Common.DT.Rows[dgv.CurrentRow.Index]["ID"]);
            Common.DelProduct(i);
            Common.Load_Form();
            Form1_Update();
        }
Класс Common
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Загрузка формы
       
        public static void Load_Form()
        {
            Connection();
            //Запрос данных из БД
            sql_cmd = new SQLiteCommand("select ID, NameProduct, Protein, Fat, Carb, Calories from NameProduct", Food.Common.connect);
            adapter = new SQLiteDataAdapter(sql_cmd);
            DS.Reset();
            adapter.Fill(DS);
            DT = DS.Tables[0];
            Disconnect();
        }
 
//Удаление записей
        public static void DelProduct(int id)
        {
            Connection();
            string txtQuery = "delete from NameProduct where id="+Convert.ToInt32(id);
            Common.ExecuteQuery(txtQuery);
            Disconnect();
        }
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
14.05.2014, 08:06
Цитата Сообщение от GaS_597 Посмотреть сообщение
В общем, когда в DataGridView делается "select ID, NameProduct, Protein, Fat, Carb, Calories from NameProduct", то все прекрасно работает. Как только я убираю из запроса поле ID, то студия отказывается удалять записи из таблицы и ругается "Column 'ID' does not belong to table Table.". Как можно обойти этот момент?
А зачем убирать поле ID? Если предположить, что вы не хотите, чтобы это поле отображалось на экране, то сделайте соответствующую колонку в DataGridView невидимой. Если же выбирать ID не позволяет какая-либо религия, то обойти данную проблему никак нельзя, ибо композиция даже всех полей без Id'а не гарантирует уникальной идентификации записи в таблице.

Добавлено через 4 минуты
PS:
Цитата Сообщение от GaS_597 Посмотреть сообщение
Convert.ToInt32(id)
Это что за порнография? Вы пытаетесь переменную типа System.Int32 ковертировать в переменную типа System.Int32. Почему бы просто не заменить это выражение на выражение "id"? Эффект будет тот же, а действий программа выполнит меньше.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.05.2014, 09:35
Автор, ты как и многие здесь усложняешь сам себе задачу. Вместо того, чтобы настроить адаптеры и просто вызывать Update(), увлекаешься командами SQL.
0
1 / 1 / 4
Регистрация: 06.05.2014
Сообщений: 167
14.05.2014, 10:08  [ТС]
Тогда поставим вопрос иначе. Как правильно присодинять базу SQLite к проекту? И как правильно настроить адаптеры, чтобы просто вызывать Update()?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.05.2014, 10:27
Все базы однотипно присоединяются. Соединение - Адаптеры (по одному на таблицу) - CommandBuilder - DataSet (содержащий нужные DataTable) - Элементы управления (DataGridView и прочие).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2014, 10:27
Помогаю со студенческими работами здесь

Как при добавлении новой строки в ListView изменить высоту строки?
Всем привет! В одной теме я решил совместить несколько вопросов, но по общей теме. 1) Как в листвью при добавлении новой строки...

Как в поле id добавлять 1 при добавлении новой строки в DBGrid
Имеется таблица, вида: ------------------ |id|pole1 | pole2 | ------------------ |1|Ivanic|Counts| ------------------ Как...

Как сделать, чтоб при добавлении новой записи изменялось значение ProgressBar1?
Есть форма1, в ней кнопка1, по нажатию на которой производиться заполнение БД. Есть форма2 с ProgressBar1. Не могу сделать, чтоб при...

Звуковой сигнал при добавлении новой записи в Базу Данных
Добрый день. Есть сайт, на котором зарегистрированные пользователи могут писать друг другу личные сообщения. Существует таблица users...

Зацикливается при добавлении новой записи в уже заполненную базу
//Зацикливается при добавлении в уже заполненную базу, новую запись procedure TForm3.Button1Click(Sender: TObject); begin if...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru