「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 から使用するものすべて。追加の質問ですが、このような単純なクエリ、または情報が 1 つしかない "COUNT" から結果を取得するにはどうすればよいですか? npgsql では、「ExecuteScalar」関数を使用します。