prep_stmt = con->prepareStatement("SELECT * FROM table WHERE customers in ( ? ) and alive = ?");
prep_stmt->setString(1,customer_string);
prep_stmt->setInt(2,1);
res = prep_stmt->executeQuery();
这里customer_string是“12,1,34,67,45,14” 当我将它作为String传递时,它总是返回一行,只取第一个值12.
编写的sql语句是:
SELECT * FROM table WHERE customers in ( "12,1,34,67,45,14" ) and alive = 1
但我想将sql语句准备为:
SELECT * FROM table WHERE customers in (12,1,34,67,45,14 ) and alive = 1
在C ++中实现相同目标的最简单方法是什么?
答案 0 :(得分:1)
我假设您正在使用MySQL C ++连接器。不幸的是,似乎无法使用此API将数组作为预准备语句的参数传递:
Connector / C ++不支持以下JDBC标准数据类型:ARRAY,BLOB,CLOB,DISTINCT,FLOAT,OTHER,REF,STRUCT。
{{3}}
您可以通过连接字符串直接将值放入查询中。非常小心不要引入SQL注入漏洞。或者使用其他一些API。