Устранение ошибки имени типа SQL при использовании параметров стиля qmark?

Я пытаюсь выполнить следующий параметризованный SQL-запрос, используя соединение ADO через пакет adodbapi, и получаю

Недопустимое имя типа

ошибки базы данных, которые я не могу решить.

cursor.execute("SELECT * FROM ?", ["Compound"])

Это приводит к следующей ошибке:

Ошибка базы данных: (-2147352567, «Произошло исключение.», (0, «Поставщик Microsoft SQL Server Compact OLE DB», «Недопустимое имя типа.», Нет, 0, -2147217872), Нет)
Команда:
SELECT * FROM ?
Параметры:
[Имя: p0, Dir.: Input, Type: adBSTR, Size: 8, Value: "Compound", Precision: 0, NumericScale: 0]

Я предполагаю, что Type name is invalid. и Type: adBSTR являются ключевыми компонентами сообщения, но я не могу найти информацию об этом типе данных, кроме строки символов Юникода, заканчивающейся нулем.

Я пробовал разные кодировки строк, такие как

[r"Compound"]
[b"Compound"]
[u"Compound"] 

И запрос отлично работает с обычной строкой:

cursor.execute("SELECT * FROM Compound")

Действительно ли это связано с типом параметра или, возможно, реализацией paramstyle qmark?


person johnDanger    schedule 19.07.2019    source источник


Ответы (1)


Имя таблицы (а также имя столбца) не может быть параметризовано в Sql. Параметры предназначены для передачи значений данных.

person Serg    schedule 19.07.2019