SQLite и "Использовать параметры в запросе"

material

Client
Регистрация
23.03.2021
Сообщения
318
Благодарностей
117
Баллы
43
База данных локальная SQLite, подключена с помощью SQLite ODBC Driver:

Если в тексте запроса к базе данных использовать параметры запроса, то возникает ошибка:
Код:
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)
Без функции "Использовать параметры в запросе" все работает корректно, даже если использовать переменные ZP в запросе, но как я понял лучше "Использовать параметры в запросе" из-за экранирования данных во избежания ошибок.

Текст запроса:
Код:
INSERT INTO test (id, name, mobile, price) VALUES (@1, @2, @3, @4);
Скриншот экшена запрос к базе данных бедет прикреплен к сообщению. Помогите решить проблему и реанимировать функционал "Использовать параметры в запросе".
 

Вложения

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
ИИ так думает...

Ошибка "Db ERROR HY000 parameter marker count incorrect (1)" указывает на проблему с количеством параметров в SQL-запросе. Это означает, что количество маркеров параметров (обычно обозначаемых знаком вопроса ? или именованными параметрами с @) в вашем SQL-запросе не соответствует количеству параметров, которые вы предоставили при попытке выполнить этот запрос.

Например, если у вас есть SQL-запрос:

INSERT INTO table_name (column1, column2) VALUES (?, ?);


Вы должны предоставить ровно два параметра при выполнении этого запроса. Если вы предоставите только один параметр или более двух, вы получите ошибку о неправильном количестве маркеров параметров.

Чтобы исправить эту ошибку, убедитесь, что вы предоставляете правильное количество параметров для всех маркеров в вашем SQL-запросе. Если вы используете именованные параметры, убедитесь, что каждому маркеру параметра соответствует значение.

Пример с именованными параметрами:

INSERT INTO table_name (column1, column2) VALUES (@param1, @param2);


В коде C# вы должны убедиться, что связываете оба параметра @param1 и @param2 с их значениями:

command.Parameters.AddWithValue("@param1", value1);
command.Parameters.AddWithValue("@param2", value2);


Если количество параметров в command.Parameters не совпадает с количеством именованных параметров в SQL-запросе, вы получите ошибку, подобную той, что вы описали.
 
  • Спасибо
Реакции: Sergodjan

material

Client
Регистрация
23.03.2021
Сообщения
318
Благодарностей
117
Баллы
43
ИИ так думает...

Ошибка "Db ERROR HY000 parameter marker count incorrect (1)" указывает на проблему с количеством параметров в SQL-запросе. Это означает, что количество маркеров параметров (обычно обозначаемых знаком вопроса ? или именованными параметрами с @) в вашем SQL-запросе не соответствует количеству параметров, которые вы предоставили при попытке выполнить этот запрос.

Например, если у вас есть SQL-запрос:

INSERT INTO table_name (column1, column2) VALUES (?, ?);


Вы должны предоставить ровно два параметра при выполнении этого запроса. Если вы предоставите только один параметр или более двух, вы получите ошибку о неправильном количестве маркеров параметров.

Чтобы исправить эту ошибку, убедитесь, что вы предоставляете правильное количество параметров для всех маркеров в вашем SQL-запросе. Если вы используете именованные параметры, убедитесь, что каждому маркеру параметра соответствует значение.

Пример с именованными параметрами:

INSERT INTO table_name (column1, column2) VALUES (@param1, @param2);


В коде C# вы должны убедиться, что связываете оба параметра @param1 и @param2 с их значениями:

command.Parameters.AddWithValue("@param1", value1);
command.Parameters.AddWithValue("@param2", value2);


Если количество параметров в command.Parameters не совпадает с количеством именованных параметров в SQL-запросе, вы получите ошибку, подобную той, что вы описали.
Это понятно даже для меня, смысл уловил и он логичен, но в моем запросе указано все верно, если нет хотелось бы на примере посмотреть в чем именно ошибка:
Код:
INSERT INTO test (id, name, mobile, price) VALUES (@1, @2, @3, @4);
Значение каждого параметра также указано в настройках ZP:
 

Вложения

Ахилес

Client
Read only
Регистрация
11.11.2020
Сообщения
956
Благодарностей
392
Баллы
63
хз... не пользуюсь этим кубиком...
но я бы не стал задавать имена как 1,2... ну p1,p2... что ли...
кавычки попробуй... 'p1', 'p2'...
 
  • Спасибо
Реакции: Sergodjan

material

Client
Регистрация
23.03.2021
Сообщения
318
Благодарностей
117
Баллы
43
ИИ так думает...

Ошибка "Db ERROR HY000 parameter marker count incorrect (1)" указывает на проблему с количеством параметров в SQL-запросе. Это означает, что количество маркеров параметров (обычно обозначаемых знаком вопроса ? или именованными параметрами с @) в вашем SQL-запросе не соответствует количеству параметров, которые вы предоставили при попытке выполнить этот запрос.

Например, если у вас есть SQL-запрос:

INSERT INTO table_name (column1, column2) VALUES (?, ?);


Вы должны предоставить ровно два параметра при выполнении этого запроса. Если вы предоставите только один параметр или более двух, вы получите ошибку о неправильном количестве маркеров параметров.

Чтобы исправить эту ошибку, убедитесь, что вы предоставляете правильное количество параметров для всех маркеров в вашем SQL-запросе. Если вы используете именованные параметры, убедитесь, что каждому маркеру параметра соответствует значение.

Пример с именованными параметрами:

INSERT INTO table_name (column1, column2) VALUES (@param1, @param2);


В коде C# вы должны убедиться, что связываете оба параметра @param1 и @param2 с их значениями:

command.Parameters.AddWithValue("@param1", value1);
command.Parameters.AddWithValue("@param2", value2);


Если количество параметров в command.Parameters не совпадает с количеством именованных параметров в SQL-запросе, вы получите ошибку, подобную той, что вы описали.
Пример, который расписал вам ИИ неверен к тому же, так как то, что указано в тексте, относится к ошибке:
Код:
Выполнение действия Db ERROR [HY000] 5 values for 4 columns (1)
 

material

Client
Регистрация
23.03.2021
Сообщения
318
Благодарностей
117
Баллы
43
хз... не пользуюсь этим кубиком...
но я бы не стал задавать имена как 1,2... ну p1,p2... что ли...
кавычки попробуй... 'p1', 'p2'...
Имена это просто пример, любые вариации имен не работают. Ковычки нельзя, мы же работаем с функционалом "Использовать параметры в запросе". Проблема именно при использовании параметров в запросе от ZP, которые экранируют значение переменной при выполнении самого запроса.

Речь в теме ведется именно об экшене "Запрос к базе данных".
 

Вложения

material

Client
Регистрация
23.03.2021
Сообщения
318
Благодарностей
117
Баллы
43
Делаю запрос с включенной функцией "Использовать параметры запроса":
IMG-380721.png
Результат:
Код:
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)
Делаю запрос с выключенной функцией "Использовать параметры запроса":
IMG-430823.png
Результат:
Код:
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)
Можно сделать вывод, что функционал "Использовать параметры запроса" не работает вовсе, так как включение или выключение его никак не влияет на код ошибки.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
Делаю запрос с включенной функцией "Использовать параметры запроса":
Посмотреть вложение 121525
Результат:
Код:
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)
Делаю запрос с выключенной функцией "Использовать параметры запроса":
Посмотреть вложение 121526
Результат:
Код:
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)
Можно сделать вывод, что функционал "Использовать параметры запроса" не работает вовсе, так как включение или выключение его никак не влияет на код ошибки.
Возможно, ошибка генерится из строки запроса.
Попробуйте поэкспериментировать все же с именами параметров в буквенно-цифровом виде.
Напишите по результатам, со скриншотами.
 
Последнее редактирование:

material

Client
Регистрация
23.03.2021
Сообщения
318
Благодарностей
117
Баллы
43
Возможно, ошибка генерится из строки запроса.
Попробуйте поэкспериментировать все же с именами параметров в буквенно-цифровом виде.
Напишите по результатам, со скриншотами.
Код:
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)
 

Вложения

  • Спасибо
Реакции: Sergodjan

Dgo

Новичок
Регистрация
24.08.2022
Сообщения
17
Благодарностей
2
Баллы
3
Как выполнять команды SQLite, подключена с помощью SQLite ODBC Driver: через c# ?
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)