gpt4 book ai didi

PostgreSQL、libpq、C

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

我有这样的程序,可以从“C”运行。如果它们不存在,则创建一个表。

PGresult *result;
conn = PG_connect();
if (conn)
{
if (!PG_begin(conn))
{
char strtable[512] = {0};
sprintf(strtable, "%s", "CREATE TABLE IF NOT EXISTS mytable");
strcat(strtable, " (setting TEXT, value TEXT, rez1 TEXT, rez2 TEXT)");
result = PQexec(conn, strtable);
if (PQresultStatus(result) != PGRES_COMMAND_OK)
{
printf("CREATE TABLE failed: %s\n", PQerrorMessage(conn));
PQclear(result);
exit_nicely(conn);
}

PQclear(result);
PG_end(conn);
}
}
PQfinish(conn);

这意味着我连接正常。
但是为什么(到底)在相同的代码和情况下这个查询不起作用?

sprintf(strtable, "%s%s", "SELECT 1 FROM pg_tables WHERE tablename=", "\'invli\'");

我总是得到没有任何文本的 PQresultStatus(result) = 2 和 PQerrorMessage(conn)!

我从 npgsql 使用的所有这些都没有问题。附加问题,如何最好地从这样的简单查询或只有一个信息的“COUNT”中获得结果?在 npgsql 中,我使用“ExecuteScalar”函数。

最佳答案

根据postgresql头文件,状态码2是PGRES_TUPLES_OK,意思是“返回元组的查询命令被后端正确执行,PGresult包含结果元组”。所以这里没有错误。相反,为 SELECT 查询返回 PGRES_COMMAND_OK 会很奇怪。

另请参阅文档中的状态代码 (http://www.postgresql.org/docs/current/static/libpq-exec.html):

PGRES_COMMAND_OK Successful completion of a command returning no data.

PGRES_TUPLES_OK Successful completion of a command returning data (such as a SELECT or SHOW).

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

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