asp 命令对象在包括编码在内的参数上执行错误
asp command object execute error on parameters including encoding
我正在运行使用命令对象进行查询,但在执行查询时出现意外错误,我需要一些帮助。
相同的代码似乎只在上面几行工作,而且似乎只在我将原始数据库 table 替换为 -dev 副本 table 后才出现。
代码如下:
sql = "SELECT blah, blah... " &_
"FROM tracker p " &_
"LEFT JOIN ... " &_
"LEFT JOIN ... " &_
"WHERE p.id = ? "
Dim cmdObj : set cmdObj = server.CreateObject("ADODB.Command")
cmdObj.ActiveConnection = conn
cmdObj.CommandText = sql
cmdObj.Parameters(0) = sID
Set rs = cmdObj.execute()
这 运行 很好,我存储了一些结果。
然后我 运行 对下一行的另一个查询使用相同的参数:
sql = "SELECT * FROM table-dev p WHERE p.id = ? "
cmdObj.CommandText = sql
cmdObj.Parameters(0) = sID
Set rs = cmdObj.execute()
产生错误:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 5.1 Driver][mysqld-5.0.95-log]You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for
the right syntax to use near '-dev p WHERE p.id = _latin1'21115'' at line 1
我希望有人能指出正确的方向,为什么现在可能会显示这个并将编码扔给参数。我以前见过这个,并设法找到了解决办法,但我一辈子都记不起怎么做了。
非常感谢所有帮助。
非常感谢,
JB
关键字 table
似乎混淆了查询引擎。只需将标识符包裹在反引号中以使其明确:
SELECT * FROM `table-dev` p WHERE p.id = ?
我正在运行使用命令对象进行查询,但在执行查询时出现意外错误,我需要一些帮助。
相同的代码似乎只在上面几行工作,而且似乎只在我将原始数据库 table 替换为 -dev 副本 table 后才出现。
代码如下:
sql = "SELECT blah, blah... " &_
"FROM tracker p " &_
"LEFT JOIN ... " &_
"LEFT JOIN ... " &_
"WHERE p.id = ? "
Dim cmdObj : set cmdObj = server.CreateObject("ADODB.Command")
cmdObj.ActiveConnection = conn
cmdObj.CommandText = sql
cmdObj.Parameters(0) = sID
Set rs = cmdObj.execute()
这 运行 很好,我存储了一些结果。 然后我 运行 对下一行的另一个查询使用相同的参数:
sql = "SELECT * FROM table-dev p WHERE p.id = ? "
cmdObj.CommandText = sql
cmdObj.Parameters(0) = sID
Set rs = cmdObj.execute()
产生错误:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 5.1 Driver][mysqld-5.0.95-log]You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for
the right syntax to use near '-dev p WHERE p.id = _latin1'21115'' at line 1
我希望有人能指出正确的方向,为什么现在可能会显示这个并将编码扔给参数。我以前见过这个,并设法找到了解决办法,但我一辈子都记不起怎么做了。
非常感谢所有帮助。 非常感谢, JB
关键字 table
似乎混淆了查询引擎。只需将标识符包裹在反引号中以使其明确:
SELECT * FROM `table-dev` p WHERE p.id = ?