我正在阅读MYSQL refman-5.6.pdf。我很不解。
mysql_stmt_bind示例代码仅显示 ? sytnax。同时,连接器/J 示例具有:
//
// Alternatively, set a parameter using
// the parameter name
//
cStmt.setString("inputParameter", "abcdefg");
如果命名参数不是连接器/J 的扩展函数,MYSQL 命名参数的正确语法是什么?
http://dev.mysql.com/doc/refman/5.6/en/connector-j-usagenotes-statements-callable.html#connector-j-examples-callablestatement 有你引用的例子,它说:
CallableStatement还支持按名称设置参数:
因此,这是特定于用于调用存储过程CallableStatement
,并且特定于MySQL的JDBC实现。这不是 JDBC 规范的标准。
此扩展仅针对CallableStatement
实现,不适用于PreparedStatement
。
重新发表您的评论:
是的,没错,MySQL不支持命名参数,只支持位置参数。
像 Connector/J CallableStatement 和 PHP 的 PDO 库这样的客户端接口实际上必须做一些额外的工作来模仿命名参数。