数组在准备语句里面的where子句中

时间:2016-08-27 17:10:40

标签: c++ mysql

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 ++中实现相同目标的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

我假设您正在使用MySQL C ++连接器。不幸的是,似乎无法使用此API将数组作为预准备语句的参数传递:

  

Connector / C ++不支持以下JDBC标准数据类型:ARRAY,BLOB,CLOB,DISTINCT,FLOAT,OTHER,REF,STRUCT。

{{3}}

您可以通过连接字符串直接将值放入查询中。非常小心不要引入SQL注入漏洞。或者使用其他一些API。