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

material

Client
Регистрация
23.03.2021
Сообщения
378
Реакции
173
Баллы
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);

Скриншот экшена запрос к базе данных бедет прикреплен к сообщению. Помогите решить проблему и реанимировать функционал "Использовать параметры в запросе".
 

Вложения

  • IMG-290333.png
    IMG-290333.png
    33 KB · Просмотры: 22
ИИ так думает...

Ошибка "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
ИИ так думает...

Ошибка "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:
 

Вложения

  • IMG-310536.png
    IMG-310536.png
    11,3 KB · Просмотры: 5
хз... не пользуюсь этим кубиком...
но я бы не стал задавать имена как 1,2... ну p1,p2... что ли...
кавычки попробуй... 'p1', 'p2'...
 
  • Спасибо
Реакции: Sergodjan
ИИ так думает...

Ошибка "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)
 
хз... не пользуюсь этим кубиком...
но я бы не стал задавать имена как 1,2... ну p1,p2... что ли...
кавычки попробуй... 'p1', 'p2'...

Имена это просто пример, любые вариации имен не работают. Ковычки нельзя, мы же работаем с функционалом "Использовать параметры в запросе". Проблема именно при использовании параметров в запросе от ZP, которые экранируют значение переменной при выполнении самого запроса.

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

Вложения

  • IMG-480645.png
    IMG-480645.png
    18,2 KB · Просмотры: 7
Делаю запрос с включенной функцией "Использовать параметры запроса":
IMG-380721.png
Результат:
Код:
Развернуть Свернуть Копировать
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)

Делаю запрос с выключенной функцией "Использовать параметры запроса":
IMG-430823.png
Результат:
Код:
Развернуть Свернуть Копировать
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)

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

Делаю запрос с выключенной функцией "Использовать параметры запроса":
Посмотреть вложение 121526
Результат:
Код:
Развернуть Свернуть Копировать
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)

Можно сделать вывод, что функционал "Использовать параметры запроса" не работает вовсе, так как включение или выключение его никак не влияет на код ошибки.
Возможно, ошибка генерится из строки запроса.
Попробуйте поэкспериментировать все же с именами параметров в буквенно-цифровом виде.
Напишите по результатам, со скриншотами.
 
Последнее редактирование:
Возможно, ошибка генерится из строки запроса.
Попробуйте поэкспериментировать все же с именами параметров в буквенно-цифровом виде.
Напишите по результатам, со скриншотами.

Код:
Развернуть Свернуть Копировать
Выполнение действия Db ERROR [HY000] parameter marker count incorrect (1)
 

Вложения

  • IMG-130947.png
    IMG-130947.png
    35,2 KB · Просмотры: 13
  • Спасибо
Реакции: Sergodjan
Как выполнять команды SQLite, подключена с помощью SQLite ODBC Driver: через c# ?
 
на mysql connector ODBC 9.2 надо обновить Latest Microsoft Visual C++ Redistributable Version и в принципе без параметров можно подставлять прямо в запрос в формате '{-Variable.variablename-}'. По крайней мере в ПМ выполняется.
 

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