Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/75: Рейтинг темы: голосов - 75, средняя оценка - 4.88
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
1

Ошибка "Отсутствует значение для одного или нескольких требуемых параметров"

25.05.2014, 23:20. Показов 15465. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Помогите,пожалуйста, разобрать в ошибке.
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
 private BindingSource source = new BindingSource();
        private DataSet dataSet = new DataSet();
        private string connectionString = "Data Source=\"BD\\bd.mdb\";User " + "ID=Admin;Provider=\"Microsoft.Jet.OLEDB.4.0\";";
        private void Form1_Load(object sender, EventArgs e)
        {
            connect();
}
 
  private void connect()
        {
            OleDbConnection connection = new OleDbConnection(connectionString);
            connection.Open();
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM anketa", connection);
            dataSet = new DataSet();
            adapter.Fill(dataSet);
            connection.Close();
            source.DataSource = dataSet.Tables[0];
            dataGridView.DataSource = source;
            dataGridView.Columns[0].Visible = false;
        }
 
        private void save()
        {
            // Подключение --------------------------------------------------------------------->>>
 
            OleDbConnection connection = new OleDbConnection(connectionString);
            connection.Open();
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM anketa", connection);
            connection.Close();
            dataGridView.Columns[0].Visible = false;
 
            // <<<---------------------------------------------------------------------
 
            // Обновление --------------------------------------------------------------------->>>
 
            adapter.UpdateCommand = new OleDbCommand("UPDATE anketa SET surname = ?, name_ = ? WHERE id = ?");
            adapter.UpdateCommand.Parameters.Add("surname", OleDbType.VarChar, 25, "surname");
            adapter.UpdateCommand.Parameters.Add("name_", OleDbType.VarChar, 12, "name_");
            adapter.UpdateCommand.Parameters.Add("id", OleDbType.Integer, 10, "id");
            adapter.UpdateCommand.Connection = connection;
 
            // <<<---------------------------------------------------------------------
 
            // Добавление --------------------------------------------------------------------->>>
 
            adapter.InsertCommand = new OleDbCommand("INSERT INTO Peoples (surname, name_) VALUES (?, ?)");
            adapter.UpdateCommand.Parameters.Add("surname", OleDbType.VarChar, 25, "surname");
            adapter.UpdateCommand.Parameters.Add("name_", OleDbType.VarChar, 12, "name_");
            adapter.InsertCommand.Connection = connection;
 
            // <<<---------------------------------------------------------------------
 
            // Удаление --------------------------------------------------------------------->>>
 
            adapter.DeleteCommand = new OleDbCommand("DELETE * FROM anketa WHERE id = ?");
            adapter.DeleteCommand.Parameters.Add("id", OleDbType.Integer, 10, "id");
            adapter.DeleteCommand.Connection = connection;
 
            // <<<---------------------------------------------------------------------
           
            adapter.Update(dataSet.Tables[0]);//ТУТ ОШИБКА
         
            
            connect();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (dataGridView.CurrentRow != null)
            {
                dataGridView.Rows.Remove(dataGridView.CurrentRow);
                save();
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            DataRow row = dataSet.Tables[0].NewRow();
            dataSet.Tables[0].Rows.Add(row);
            save();
        }
 
        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            save();
        }
Пишет: Отсутствует значение для одного или нескольких требуемых параметров.

Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2014, 23:20
Ответы с готовыми решениями:

Ошибка - отсутствует значение для одного или нескольких требуемых параметров
делаю запрос взять значение из таблицы по id счетчик но выходит ошибка string s =...

Отсутствует значение для одного или нескольких требуемых параметров. В чем ошибка?
Есть код Form2 frm = new Form2(); frm.Show(this); ...

Отсутствует значение для одного или нескольких требуемых параметров
У меня есть бд в Access. Я с ней работаю в WinForms через форму DataGridView. Я пытаюсь программно...

Отсутствует значение для одного или нескольких требуемых параметров
Уже три дня сижу над ошибкой. Прочитала все форумы, посмотрела все видео, не знаю как заканчивать...

Отсутствует значение для одного или нескольких требуемых параметров
&quot;Отсутствует значение для одного или нескольких требуемых параметров.&quot; Пишу проектную работу по...

14
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
25.05.2014, 23:47 2
Вместо всех этих строк в секциях обновление, удаление, добавление. Вызови OleDbCommandBuilder - он всё настроит сам.
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
26.05.2014, 00:11  [ТС] 3
Вам несложно будет показать в виде примера одну из секций,просто не разу не работал с билдером.
Благодарю.
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
26.05.2014, 06:58 4
linkoln_737, У вас id является счетчиком? В таблице anketa у вас всего 3 поля? Если у вас id не является счетчиком, то его нужно вставялть явно. В противном случае получите ошибку: "Отсутствует значение для одного или нескольких требуемых параметров.". Если у вас кроме этих 3-х полей имеются другие, которые не могут содрежать значение NULL и не имеют значения по-умолчанию, то при попытке вставить данные не заполняя такие поля вы поулчите ошибку: "Отсутствует значение для одного или нескольких требуемых параметров.".
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
26.05.2014, 14:15  [ТС] 5
да id счетчик
0
7793 / 6560 / 2984
Регистрация: 14.04.2014
Сообщений: 28,672
26.05.2014, 16:33 6
C#
1
2
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM anketa", connection);
var cb_adapter = new OleDbCommandBuilder(adapter);
Для сохранения данных вызываешь
C#
1
adapter.Update(dataSet.Tables[0]);
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
26.05.2014, 17:47  [ТС] 7
Все равно эта же ошибка,у меня и было через adapter

C#
1
2
3
4
 OleDbConnection connection = new OleDbConnection(connectionString);
            connection.Open();
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM anketa", connection);
            dataSet = new DataSet();
а после объявление переменное

C#
1
var cb_adapter = new OleDbCommandBuilder(adapter);
тоже ошибка та же "Отсутствует значение для одного или нескольких требуемых параметров."
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
26.05.2014, 18:02 8
linkoln_737,
C#
1
2
3
4
5
6
 private void button2_Click(object sender, EventArgs e)
        {
            DataRow row = dataSet.Tables[0].NewRow();
            dataSet.Tables[0].Rows.Add(row);
            save();
        }
Гхм ... В каком месте, по вашемк, заполняются поля? У вас в базу улетает строка с null'ами вместо значений. Попробуйте задать какие-нибудь значения в полях name_ и surname. Должно помочь.
PS: Вы так и не ответили по поводу общего количества столбцов в таблице.
PPS: Визуально у вас код рабочий и без commandBuilder'а. Если вам удобнее прописывать комманды самому, то прописывайте лучше сами. Пользы больше будет.
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
26.05.2014, 18:22  [ТС] 9
Мне же нужно чтобы значения user вбивал прям в сам datagridview
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
26.05.2014, 18:52 10
linkoln_737, а я вас заставляю что ли? Вам же ни что не мешает сделать так:
C#
1
2
row["name_"] = "737";
row["surname"] = "Linkoln";
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
26.05.2014, 21:32  [ТС] 11
К сожалению ошибка остается.

Добавлено через 4 минуты
C#
1
2
3
4
5
6
7
8
9
10
try
            {
                adapter.Update(dataSet.Tables[0]);
            }
     
            catch (Exception)
            {
                MessageBox.Show("Bug");
            
            }
Так он на время добавляет мне
737 Linkoln в грид,но вылетает исключительная ситуация и все опять не работает

Добавлено через 13 минут
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
26.05.2014, 21:34  [ТС] 12
вот сам проект
Вложения
Тип файла: rar Organize.rar (209.0 Кб, 17 просмотров)
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
27.05.2014, 08:45 13
linkoln_737, Слов нет, одни маты. Но так как цензуру здесь никто не отменял, то без коментариев:
Цитата Сообщение от linkoln_737 Посмотреть сообщение
adapter.InsertCommand = new OleDbCommand("INSERT INTO Peoplesanketa (surname, name_) VALUES (?, ?)");
adapter.UpdateInsertCommand.Parameters.Add("surname", OleDbType.VarChar, 25, "surname");
adapter.UpdateInsertCommand.Parameters.Add("name_", OleDbType.VarChar, 12, "name_");
adapter.InsertCommand.Connection = connection;
0
19 / 19 / 13
Регистрация: 19.03.2013
Сообщений: 423
05.06.2014, 23:06  [ТС] 14
Доброго времени суток.
Ругается,выдает ошибку "Отсутствует значение для одного или нескольких требуемых параметров."
на это adapter.Fill(dataSet);


C#
1
2
3
4
5
6
7
8
9
10
11
 string search = textBox5.Text;
           
            OleDbConnection connection = new OleDbConnection(connectionString);
            connection.Open();
            OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT  * FROM anketa where surname="+search+" ", connection);
 
            dataSet = new DataSet();
            adapter.Fill(dataSet);
            connection.Close();
            source.DataSource = dataSet.Tables[0];
            dataGridView.DataSource = source;
Знаю ,что все дико криво и что через adapter не рекомендуется,но все же помогите исправить,заранее благодарю)
0
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
06.06.2014, 05:32 15
Лучший ответ Сообщение было отмечено linkoln_737 как решение

Решение

linkoln_737, Если вы не хотите пользоваться параметрическими запросами, то тогда правильно собирайте строку. Строка в запросе должна обрамалятся ковычкам: "SELECT * FROM anketa where surname='"+search+"'", иначе она будет воспринимматься, как требуемый параметр, а не строка.
2
06.06.2014, 05:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2014, 05:32
Помогаю со студенческими работами здесь

Отсутствует значение для одного или нескольких требуемых параметров
как победить эту ошибку? никак не пойму в чем дело, sql запрос вроде вполне корректный - удаление...

Отсутствует значение для одного или нескольких требуемых параметров
Никак не могу понять, как сделать рабочую UPDATE команду. Почему-то без WHERE она прекрасно...

Обновление DataGridView: Отсутствует значение для одного или нескольких требуемых параметров
Здравствуйте!!! У меня почему-то выдает ошибку System.Data.OleDb.OleDbException: Отсутствует...

Как изменить данные? Ошибка "Отсутствует значение для одного или нескольких требуемых параметров"
Привет, всем! Пытаюсь обновить данные, но выводит ошибку System.Data.OleDb.OleDbException:...

Как исправить ошибку? OleDbException Отсутствует значение для одного или нескольких требуемых параметров
System.Data.OleDb.OleDbException: &quot;Отсутствует значение для одного или нескольких требуемых...

исключение "Отсутствует значение для одного или нескольких требуемых параметров."
Здравствуйте! Делаю окно авторизации. Выполняется запрос в бд access для проверки, есть ли данный...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru