无法检查postgresql中是否存在表

kokeuurv  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(287)

我正在编写一个连接到postgreql数据库的c程序。我正在尝试检查表:

PGresult  *re=PQexec(connection, "SELECT to_regclass('fp_stores_data')");

此变量是全局变量。但当我编译代码时,会出现以下错误:

db.c:6:20: error: initializer element is not constant
6 | PGresult const *re=PQexec(connection, "SELECT to_regclass('fp_stores_data')");
a9wyjsp7

a9wyjsp71#

如果这是一个全局变量,c要求用编译时已知的东西初始化它;如果需要打电话给 PQexec() ,这是运行时的事情,是不允许的(正如编译器告诉您的)。
如果变量需要保持全局性,最好是初始化 re 变量为null,并移动实际 PQexec() 在建立数据库连接之后,调用/分配到运行时代码中。
非数据库示例:不能使用运行时调用初始化任何静态变量,因此:

FILE *infile = fopen("myfile.txt", "r");  // NO

int main()
{
    infile = fopen("myfile.txt", "r");    // YES
    ...

变量可以是静态的;这只是必须在运行时进行的赋值。
或者,如果变量是本地变量,则可以通过运行时调用对其进行初始化。

相关问题