我必须使用libpq库而不是libpqxx,而且在准备好的语句中找不到如何为数字类型绑定NULL值。 我尝试使用NULL或null或什至使用“”,但均无效。
...
std::string statements = "insert into ipls_troubleticketerrorreport2 (CUSTOMER, NETWORK,SELECTABLEMONTH, ERRORCODE,ERRORMESSAGE, TTID ) " \
"values ($1, $2, to_date($3,'DD.MM.YYYY'), $4, $5, $6);";
for (int i=0; i< sqlParametersWithValue.size();i++)
{
char NULLstr[] = "NULL";
if ((sqlParametersWithValue[i].second) == "")
{
paramValues[i] = NULLstr;
}
else
{
paramValues[i] = &(*(sqlParametersWithValue[i].second).c_str());
}
}
pgres = PQexecParams(pgconn,statements.c_str(), sqlParametersWithValue.size() , NULL, paramValues, NULL, NULL, 0);
答案 0 :(得分:0)
您正在向其传递包含“ NULL”而不是实际的空指针的字符串。
paramValues[i] = NULL;
paramValues[i] = nullptr; // If using C++
https://www.postgresql.org/docs/9.1/libpq-exec.html
paramValues[]
指定参数的实际值。该数组中的空指针表示相应的参数为空;否则,指针将指向以零结尾的文本字符串(对于文本格式)或服务器期望的格式的二进制数据(对于二进制格式)。