我创建了这个函数来将数据插入数据库:
void add_data_to_db(){
const char *data[2][2] = {"2","e"};
re = PQexecParams(connection,
"INSERT INTO test_table "\
"VALUES ($1, $2);",
2,NULL,data[2],NULL,NULL,0);
if(PQresultStatus(re) != PGRES_TUPLES_OK){
printf("%s\n", PQresultErrorMessage(re));
}
PQclear(re);
}
但是当我运行程序时它会打印:
ERROR: invalid byte sequence for encoding "UTF8": 0x80
据我所知,当我们将空值添加到表中但我没有添加时,就会出现此问题。
最佳答案
根据documentation PQExecParams
的第五个参数应该是 const char * const *paramValues
...所以 pointer to constant pointers which point to constant char
。文档指定它应该指向指定(在第三个参数中)长度的数组(此处为 2)。
data[2]
是 data
数组的第三个元素(哎呀,它只有两个元素!)。
data
将衰减为指向第一个元素的指针;这是一个指向两个指针数组的指针,每个指针都指向一个字符串。正是您所需要的。
关于sql - 如何处理 libpq 中的 UTF-8 编码错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62685111/