具有文本字段的ODBC选择查询不返回记录

时间:2018-11-02 01:04:37

标签: mysql excel-vba odbc adodb sql-parametrized-query

我在mysql表中-产品(product_id int,名称varchar,描述文本)。
我使用最新的ODBC驱动程序通过参数化查询从Excel(VBA)连接到mysql:

dim DCONT as ADODB.Connection
set DCONT = new ADODB.Connection
DCONT.open "DSN=myDSN"

set cmd = new ADODB.command
cmd.commandtext = "SELECT product_id, name FROM products WHERE name LIKE ?" 
set param1=cmd.createparameter("@strName", advarchar, adparaminput, 30, "%testvalue%"
cmd.parameters.append param1
cmd.activeconnection = DCONT
dim rsRecords = new ADODB.recordset
rsRecords.open cmd

此代码正确返回请求的记录。 当我将命令文本更改为(查询包括表中的字段描述(字段类型文本))

cmd.commandtext = "SELECT product_id, name, description FROM products WHERE name LIKE ?" 

它不返回任何记录。 以同样的方式使用该查询

cmd.commandtext = "SELECT * FROM products WHERE name LIKE ?" 

它不返回任何记录。

不带参数查询的下一个代码将返回请求的记录。这意味着仅通过使用参数化查询返回记录存在问题。

dim DCONT as ADODB.Connection
set DCONT = new ADODB.Connection
DCONT.open "DSN=myDSN"

set cmd = new ADODB.command
cmd.commandtext = "SELECT product_id, name, description FROM products WHERE name LIKE '%testvalue%'"
cmd.activeconnection = DCONT
dim rsRecords = new ADODB.recordset
rsRecords.open cmd

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

解决方案->需要升级到最新的MySQL ODBC 8.0 ANSI驱动程序,版本8.00.13.00,然后一切正常。