使用qmark样式参数时解决SQL类型名称错误?

时间:2019-07-19 17:58:43

标签: python sql parameterized adodbapi

我正在尝试通过adodbapi程序包使用ADO连接进行以下参数化的SQL查询,并遇到Type name is invalid无法解决的数据库错误。

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

这会导致以下错误:

DatabaseError: (-2147352567, 'Exception occurred.', (0, 'Microsoft SQL Server Compact OLE DB Provider', 'Type name is invalid.', None, 0, -2147217872), None)
Command:
SELECT * FROM ?
Parameters:
[Name: p0, Dir.: Input, Type: adBSTR, Size: 8, Value: "Compound", Precision: 0, NumericScale: 0]

我假设'Type name is invalid.'Type: adBSTR是消息的关键组成部分,但除了以空字符结尾的Unicode字符串外,我找不到有关此数据类型的信息。

我尝试了不同的字符串编码,例如

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

查询与正常字符串正常工作

cursor.execute("SELECT * FROM Compound")

这实际上是由于参数类型还是qmark paramstyle的实现?

1 个答案:

答案 0 :(得分:0)

不能在Sql中参数化表名(以及列名)。参数旨在传递数据值。