参数化查询的查询格式
Query formatting for Parameterized Queries
我正在使用 pg-promise
在 PostgreSQL 中使用 like 子句执行 select 查询。不幸的是,查询失败,错误代码为 08P01
和错误消息
bind message supplies 1 parameters, but prepared statement "" requires
0
查询如下
select user_name, user_id from users where user_name like '#%'
我正在使用参数化查询作为
var userQuery:pgp.ParameterizedQuery = new pgp.ParameterizedQuery("<above_query>", [userName]);
用于执行查询的API是
each(query:TQuery, values:any, cb:(row:any, index:number, data:Array<any>)=>void, thisArg?:any):XPromise<Array<any>>;
我查看了 pg-promise 示例,但它没有在参数化查询中使用 LIKE 子句。
环境详细信息为
pg-promise: 4.3.2
PostgreSQL: 9.6
Node: 5.7.1
更新:1
我可以使用 query
API(纯文本 sql)运行 查询,但不能使用 each
。任何人都可以解释为什么 LIKE 子句在使用 Parameterized
API.
时失败 each
Only the basic variables (</code>, <code>
, etc) can be used in the query, because Parameterized Queries are formatted by the database server.
类型 PreparedStatement and ParameterizedQuery represent the corresponding objects within the node-postgres 执行它们的驱动程序。这些对象封装了查询和格式化参数。
即这两个对象的全部意义在于将查询和格式化参数都传递到服务器,因此它们在那里被格式化,而不是使用内部查询格式化引擎。
因此,您无法访问 pg-promise, such as #
syntax. You can use the pg-promise syntax for query formatting when you are using queries directly, as a query string or as a QueryFile 对象的内部查询格式化功能。
使用 PreparedStatement and ParameterizedQuery,您只能访问数据库服务器支持的基本 , ,...
类型的参数格式,除此之外别无他法。
P.S。我是 pg-promise.
的作者
我正在使用 pg-promise
在 PostgreSQL 中使用 like 子句执行 select 查询。不幸的是,查询失败,错误代码为 08P01
和错误消息
bind message supplies 1 parameters, but prepared statement "" requires 0
查询如下
select user_name, user_id from users where user_name like '#%'
我正在使用参数化查询作为
var userQuery:pgp.ParameterizedQuery = new pgp.ParameterizedQuery("<above_query>", [userName]);
用于执行查询的API是
each(query:TQuery, values:any, cb:(row:any, index:number, data:Array<any>)=>void, thisArg?:any):XPromise<Array<any>>;
我查看了 pg-promise 示例,但它没有在参数化查询中使用 LIKE 子句。
环境详细信息为
pg-promise: 4.3.2
PostgreSQL: 9.6
Node: 5.7.1
更新:1
我可以使用 query
API(纯文本 sql)运行 查询,但不能使用 each
。任何人都可以解释为什么 LIKE 子句在使用 Parameterized
API.
each
Only the basic variables (
</code>, <code>
, etc) can be used in the query, because Parameterized Queries are formatted by the database server.
类型 PreparedStatement and ParameterizedQuery represent the corresponding objects within the node-postgres 执行它们的驱动程序。这些对象封装了查询和格式化参数。
即这两个对象的全部意义在于将查询和格式化参数都传递到服务器,因此它们在那里被格式化,而不是使用内部查询格式化引擎。
因此,您无法访问 pg-promise, such as #
syntax. You can use the pg-promise syntax for query formatting when you are using queries directly, as a query string or as a QueryFile 对象的内部查询格式化功能。
使用 PreparedStatement and ParameterizedQuery,您只能访问数据库服务器支持的基本 , ,...
类型的参数格式,除此之外别无他法。
P.S。我是 pg-promise.
的作者