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

Ошибка при удалении строки из базы данных

04.12.2023, 13:22. Показов 710. Ответов 6

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть форма в Windows forms подключенная к FireBird. Однако существует проблема которую я не знаю как решить. При удалении строчки выводит ошибку FirebirdSql.Data.FirebirdClient.FbExcept ion: "Dynamic SQL Error SQL error code = -104 Token unknown - line 1, column 8 MEMBERS". Хотя в кнопке добавить и обновить у меня все те же самые названия стоят и они работают. Ниже приведена форма и код формы. Соотвественно button4 отвечает за удаление
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using FirebirdSql.Data.FirebirdClient;
 
namespace IOGKF
{
    public partial class Form7 : Form
    {
        FbConnection fbCon;
        private FbConnection connection;
        public Form7()
        {
            InitializeComponent();
            dataGridView1.RowHeaderMouseClick += new DataGridViewCellMouseEventHandler(OnRowHeaderMouseClick);
            string connectionString = "User=SYSDBA;Password=masterkey;Database=D:\\MEMBERS1.fdb;DataSource=localhost;Port=3050;Dialect=3;Charset=WIN1251;";
            connection = new FbConnection(connectionString);
        }
 
        private void OnRowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            //MessageBox.Show("Clicked RowHeader!");
            textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
            textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
            textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
            textBox4.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
            comboBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
            comboBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString();
            comboBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString();
            comboBox4.Text = dataGridView1.Rows[e.RowIndex].Cells[7].Value.ToString();
        }
 
        string connectionString = "User=SYSDBA;Password=masterkey;Database=D:\\MEMBERS1.fdb;DataSource=localhost;Port=3050;Dialect=3;Charset=WIN1251;";
 
       
        FbDataAdapter adapt;
        int ID = 0;
 
        private void Form7_Load(object sender, EventArgs e)
        {
           
           
            connection.Open();
            DataTable dt = new DataTable();
            adapt = new FbDataAdapter("select * from MEMBERS", connection);
            adapt.Fill(dt);
            dataGridView1.DataSource = dt;
            connection.Close();
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            Form3 form3 = new Form3();
            form3.ShowDialog();
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
       
 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && comboBox1.Text != "" && comboBox2.Text != "" && comboBox3.Text != "" && comboBox4.Text != "")
            {
                var insertCommand = new FbCommand("INSERT INTO MEMBERS (USER_ID, NAME, SURNAME, AGE, RANK, SECTOR, SPECIALITY, WORKSHOP ) VALUES (@USER_ID,  @NAME, @SURNAME, @AGE, @RANK, @SECTOR, @SPECIALITY, @WORKSHOP)", connection);
                connection.Open();
                insertCommand.Parameters.AddWithValue("@USER_ID", textBox1.Text);
                insertCommand.Parameters.AddWithValue("@NAME", textBox2.Text);
                insertCommand.Parameters.AddWithValue("@SURNAME", textBox3.Text);
                insertCommand.Parameters.AddWithValue("@AGE", textBox4.Text);
                insertCommand.Parameters.AddWithValue("@RANK", comboBox1.Text);
                insertCommand.Parameters.AddWithValue("@SECTOR", comboBox2.Text);
                insertCommand.Parameters.AddWithValue("@SPECIALITY", comboBox3.Text);
                insertCommand.Parameters.AddWithValue("@WORKSHOP", comboBox4.Text);
                insertCommand.ExecuteNonQuery();
                connection.Close();
                MessageBox.Show("Сотрудник добавлен!");
                DisplayData();
                ClearData();
            }
            else
            {
                MessageBox.Show("Корректно заполните все данные!");
            }
        }
 
        private void DisplayData()
        {
            connection.Open();
            DataTable dt = new DataTable();
            adapt = new FbDataAdapter("select * from MEMBERS", connection);
            adapt.Fill(dt);
            dataGridView1.DataSource = dt;
            connection.Close();
        }
 
        private void ClearData()
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            comboBox1.Text = "";
            comboBox2.Text = "";
            comboBox3.Text = "";
            comboBox4.Text = "";
            ID = 0;
        }
 
        private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            
            textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
            textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
            textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
            textBox4.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
            comboBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
            comboBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString();
            comboBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString();
            comboBox4.Text = dataGridView1.Rows[e.RowIndex].Cells[7].Value.ToString();
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && comboBox1.Text != "" && comboBox2.Text != "" && comboBox3.Text != "" && comboBox4.Text != "")
            {
                var insertCommand = new FbCommand("update Members set USER_ID=@USER_ID,NAME=@NAME,SURNAME=@SURNAME,AGE=@AGE,RANK=@RANK,SECTOR=@SECTOR,SPECIALITY=@SPECIALITY,WORKSHOP=@WORKSHOP where USER_ID=@USER_ID", connection);
                connection.Open();
                insertCommand.Parameters.AddWithValue("@USER_ID", textBox1.Text);
                insertCommand.Parameters.AddWithValue("@NAME", textBox2.Text);
                insertCommand.Parameters.AddWithValue("@SURNAME", textBox3.Text);
                insertCommand.Parameters.AddWithValue("@AGE", textBox4.Text);
                insertCommand.Parameters.AddWithValue("@RANK", comboBox1.Text);
                insertCommand.Parameters.AddWithValue("@SECTOR", comboBox2.Text);
                insertCommand.Parameters.AddWithValue("@SPECIALITY", comboBox3.Text);
                insertCommand.Parameters.AddWithValue("@WORKSHOP", comboBox4.Text);
                insertCommand.ExecuteNonQuery();
                MessageBox.Show("База данных обновлена!");
                connection.Close();
                DisplayData();
                ClearData();
            }
            else
            {
                MessageBox.Show("Корректно заполните все данные!");
            }
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != null)
            {
                var insertCommand = new FbCommand("delete MEMBERS where user_id=@user_id", connection);
                connection.Open();
                insertCommand.Parameters.AddWithValue("@user_id", textBox1.Text);
                insertCommand.ExecuteNonQuery();
                connection.Close();
                MessageBox.Show("Удаление завершено!");
                DisplayData();
                ClearData();
            }
            else
            {
                MessageBox.Show("Ошибка удаления");
            }
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
 
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
 
        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
 
        private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
        private void LoadEmployees()
        {
            using (var adapter = new FbDataAdapter("SELECT * FROM MEMBERS", connection))
            {
                var table = new DataTable();
                adapter.Fill(table);
                dataGridView1.DataSource = table;
            }
        }
    }
}
Миниатюры
Ошибка при удалении строки из базы данных  
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2023, 13:22
Ответы с готовыми решениями:

Ошибка при удалении из базы данных
Всегда удалял данные из таблицы одним и тем же путем: private void удалить_квартира_button_Click(object sender, EventArgs e) ...

Ошибка NullReferenceException при удалении из базы данных
Добрый день! При попытке удалить запись из базы данных пишет ошибку (System.NullReferenceException: 'Ссылка на объект не указывает на...

При удалении строки из базы и datatable возникает ошибка "ArgumentOutOfRangeException"
Есть база данных dbf, из нее заполняется datatable1, из datatable1 вручную заполняется datatable2, к которому привязан report. (Datatable2...

6
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
04.12.2023, 13:38
Лучший ответ Сообщение было отмечено IGRVKH как решение

Решение

Цитата Сообщение от IGRVKH Посмотреть сообщение
Соотвественно button4 отвечает за удаление
Не 4 а 5.
Цитата Сообщение от IGRVKH Посмотреть сообщение
SQL
1
DELETE MEMBERS WHERE user_id=@user_id
В режиме отладки смотрели что в параметр попадает?

Добавлено через 1 минуту
IGRVKH, И для FireBird запрос по другому пишется
SQL
1
DELETE FROM MEMBERS WHERE user_id=@user_id
0
1 / 1 / 0
Регистрация: 10.01.2020
Сообщений: 130
04.12.2023, 13:50  [ТС]
Андрей спасибо большое. Добавление FROM помогло
0
643 / 338 / 139
Регистрация: 19.10.2013
Сообщений: 1,209
05.12.2023, 13:09
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
И для FireBird запрос по другому пишется
а для каких СУБД пишется без FROM ?
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
05.12.2023, 13:45
Цитата Сообщение от 116rus Посмотреть сообщение
а для каких СУБД пишется без FROM ?
MS SQL Server
0
643 / 338 / 139
Регистрация: 19.10.2013
Сообщений: 1,209
05.12.2023, 13:51
Andrey-MSK, нифига себе, сколько с sql server работаю, про такое слышу впервые,и в правду....
0
 Аватар для Andrey-MSK
3312 / 2199 / 387
Регистрация: 14.08.2018
Сообщений: 7,400
Записей в блоге: 4
05.12.2023, 13:56
Цитата Сообщение от 116rus Посмотреть сообщение
нифига себе
Можно и так, и так
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
-- Syntax for SQL Server and Azure SQL Database  
  
[ WITH <common_table_expression> [ ,...n ] ]  
DELETE   
    [ TOP ( expression ) [ PERCENT ] ]   
    [ FROM ]   
    { { table_alias  
      | <object>   
      | rowset_function_limited   
      [ WITH ( table_hint_limited [ ...n ] ) ] }   
      | @table_variable  
    }  
    [ <OUTPUT Clause> ]  
    [ FROM table_source [ ,...n ] ]   
    [ WHERE { <search_condition>   
            | { [ CURRENT OF   
                   { { [ GLOBAL ] cursor_name }   
                       | cursor_variable_name   
                   }   
                ]  
              }  
            }   
    ]   
    [ OPTION ( <Query Hint> [ ,...n ] ) ]   
[; ]  
  
<object> ::=  
{   
    [ server_name.database_name.schema_name.   
      | database_name. [ schema_name ] .   
      | schema_name.  
    ]  
    table_or_view_name   
}
Добавлено через 59 секунд
116rus,
FROM
Необязательное ключевое слово, которое можно использовать между ключевым словом DELETE и целевым аргументом table_or_view_name или rowset_function_limited.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2023, 13:56
Помогаю со студенческими работами здесь

при удалении строки из базы данных, строка записывается с последнего значения
При удалении строки из БД уникальный id все равно продолжает авто инкримент с последнего значения, то есть я удаляю id 6, а следующая...

Ошибка при удалении базы
Возникла такая вот проблема, раньше всё было в порядке, до того как поменял винду. При попытке удалить базу выдаёт ошибку - Индекс...

Странная ошибка при удалении из базы.
Здравствуйте. Есть код готовый, рабочий с баззой данных. Ошибка вылетает(через раз) когда сначала добавляется элемент а потом...

При удалении восстанавливаются номера из базы данных MySQL
Метод для удаления : static void DeleteContact(string name) { string BB = name; ...

При физическом удалении файлов из базы данных, размер файла остается огромным
Помогите с базой данных, расширение db4.


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru