gpt4 book ai didi

PostgreSQL、libpq/C、更新参数

转载 作者:行者123 更新时间:2023-11-29 13:04:53 30 4
gpt4 key购买 nike

我可以通过字符串操作来更新表中的记录,这有一些弱点。
所以,现在我尝试使用参数进行更新,但这并不像我想的那样。

sprintf(sql, "%s%s%s%s%s%d%s",
"UPDATE ", mytable, " SET ",
"my_id=$0, mystr1=$1, mystr2=$2, myint=$3, mydouble=$4",
"WHERE my_id='", local_my_id, "'");

const char *values[5] =
{local_my_id, local_mystr1, local_mystr2, local_myint, local_mydouble};

result = PQexecParams(conn, sql, 5, NULL, values, NULL, NULL, 0);

值 1 和 4 是整数,值 5 是不适合 const char 数组的两倍。
我只对字符串进行了相同的尝试,并且有效。

如果我必须将数字转换为看起来不合逻辑的字符串。

如何正确地做到这一点?

最佳答案

将数字转换为字符串可能看起来不合逻辑,但如果您使用默认的“文本”协议(protocol),这正是您必须做的。考虑使用 the libpqtypes library ,它会为您处理很多此类细节。

您可以使用二进制协议(protocol)(在逐个参数的基础上,请参阅关于 PQexecParams 的文档)...但通常您最好使用文本协议(protocol)。它通常在网络上实际上更快,特别是对于很多小数字,如果您使用文本协议(protocol),您不必担心字节顺序和数字格式问题。

关于PostgreSQL、libpq/C、更新参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16940358/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com