解决使用 qmark 样式参数时的 SQL 类型名称错误?
Resolving SQL type name error when using qmark style parameters?
我正在尝试通过 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
是消息的关键组成部分,但我找不到关于此数据类型的信息,除了它是以 null 结尾的 unicode 字符串。
我尝试过不同的字符串编码,例如
[r"Compound"]
[b"Compound"]
[u"Compound"]
并且查询可以正常使用普通字符串:
cursor.execute("SELECT * FROM Compound")
这实际上是由于参数类型还是 qmark paramstyle 实现?
Table 名称(以及列名)不能在 Sql 中参数化。参数旨在传递数据值。
我正在尝试通过 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
是消息的关键组成部分,但我找不到关于此数据类型的信息,除了它是以 null 结尾的 unicode 字符串。
我尝试过不同的字符串编码,例如
[r"Compound"]
[b"Compound"]
[u"Compound"]
并且查询可以正常使用普通字符串:
cursor.execute("SELECT * FROM Compound")
这实际上是由于参数类型还是 qmark paramstyle 实现?
Table 名称(以及列名)不能在 Sql 中参数化。参数旨在传递数据值。