Code Bye

Postgresql的C语言libpq接口PQexecParams函数

postgresql提供了C语言的libpq接口
有表test((id int,name varchar)
insert into test values(1056,”postgresa”)
insert into test values(1055,”postgresb”)
insert into test values(1057,”postgresc”)
假如:
在C程序里面
paramValues[0] = “1056”;
res = PQexecParams(conn,”select * from test where id = $1;”,1,NUll,paramValues,NULL,NULL,0);
可以正常执行
假如 paramValues[0] = “id”;(此处不让这个变量值为表中的一个值,而是赋值为一个字段的名字)
res = PQexecParams(conn,”select * from test where $1 = 1056;”,1,NULL,paramValues,NULL,NULL,0);
这样的话就无法正确执行了,会返回错误信息
The database operation failed : ERROR:  invalid input syntax for integer: “id”
或paramValues[0] = “id”
res = PQexecParams(conn,”select * from test order by $1 asc;”,1,NULL,paramValues,NULL,NULL,0);
输出的结果
id            name
1056          postgresa
1055          postgresb
1057          postgresc
并没有进行排序
这样的话就是无法把字段值作为一个参数放到sql语句中了,不知道是本人有的参数没有照顾到还是这样根本行不通,假如不行的话有没有什么解决的办法呢?
解决方案

40

搜“动态SQL”

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Postgresql的C语言libpq接口PQexecParams函数