gpt4 book ai didi

c - 如何使用 libpq (PostgreSQL) 将 PGresult 转换为自定义数据类型

转载 作者:行者123 更新时间:2023-11-29 12:01:25 24 4
gpt4 key购买 nike

我正在使用 C 中的 libpq 库来访问我的 PostgreSQL 数据库。所以,当我做 res = PQexec(conn, "SELECT point FROM test_point3d");我不知道如何将我得到的 PGresult 转换为我的自定义数据类型。

我知道我可以使用 PQgetValue 函数,但我还是不知道如何将返回的字符串转换为我的自定义数据类型。

最佳答案

考虑这一点的最佳方式是数据类型通过文本界面与应用程序交互。 Libpq 几乎可以从任何东西返回一个字符串。程序员有责任解析字符串并从中创建数据类型。我知道作者可能已经放弃了这个问题,但我正在研究类似的东西,值得在这里记录一些在某些情况下有用的重要技巧。

显然,如果这是一个 C 语言类型,具有自己的输入和输出表示,那么您将不得不按照通常的方式解析字符串。

但是对于数组和元组,基本的表示法是

[open_type_identifier][csv_string][close_type_identifier]

例如一个元组可以表示为:

(35,65,1111111,f,f,2011-10-06,"2011-10-07 13:11:24.324195",186,chris,f,,,,f)

这使得它易于解析。您通常可以使用现有的 csv 处理器,一旦您关闭了第一个和最后一个字符。此外,请考虑:

select row('test', 'testing, inc', array['test', 'testing, inc']);
row
-------------------------------------------------
(test,"testing, inc","{test,""testing, inc""}")
(1 row)

因为这表明您在嵌套属性中使用了标准 CSV 转义,所以您实际上可以确定第三个属性是一个数组,然后(取消双引号)将其解析为一个数组。通过这种方式,嵌套数据结构的处理方式与您对 JSON 等格式的预期大致相似。诀窍在于它是嵌套的 CSV。

关于c - 如何使用 libpq (PostgreSQL) 将 PGresult 转换为自定义数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779927/

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