我有这样的程序,它可以从“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”函数。