无法使用 C 中的 libpq 在数据库中创建 table
can not create a table in database with libpq in C
我创建了一个 c 函数,它在我的 postgresql 数据库上创建了一个 table。这里:
#include <stdio.h>
#include <libpq-fe.h>
#include <stdlib.h>
PGconn *connection;
PGresult *re;
void create_table(){
re= PQexec(connection, "SELECT to_regclass('fp_stores_data')");
if(!re){
PQclear(re);
re = PQexec(connection ,"CREATE TABLE test(name VARCHAR(3))");
if(PQresultStatus(re)==PGRES_COMMAND_OK){
printf("table created!");
}else{
printf("failed to create table!");
}
}else{
printf("table was created befor!");
}
PQclear(re);
}
int main() {
connection = PQconnectdb("user=username password=123 dbname=projectdb");
create_table();
PQfinish(connection);
return 0;
}
但每次我 运行 程序都会打印 failed to create table!
并且数据库中不会有任何具有该 table 名称的内容。
使用PQresultErrorMessage
获取您执行的SQL的错误文本,例如:
printf("%s\n", PQresultErrorMessage(re));
或 PQerrorMessage
以获取与您的连接相关的任何错误的错误文本,例如:
printf("%s\n", PQerrorMessage(connection));
这些函数的postgresql文档在这里:
https://www.postgresql.org/docs/current/libpq-exec.html
我创建了一个 c 函数,它在我的 postgresql 数据库上创建了一个 table。这里:
#include <stdio.h>
#include <libpq-fe.h>
#include <stdlib.h>
PGconn *connection;
PGresult *re;
void create_table(){
re= PQexec(connection, "SELECT to_regclass('fp_stores_data')");
if(!re){
PQclear(re);
re = PQexec(connection ,"CREATE TABLE test(name VARCHAR(3))");
if(PQresultStatus(re)==PGRES_COMMAND_OK){
printf("table created!");
}else{
printf("failed to create table!");
}
}else{
printf("table was created befor!");
}
PQclear(re);
}
int main() {
connection = PQconnectdb("user=username password=123 dbname=projectdb");
create_table();
PQfinish(connection);
return 0;
}
但每次我 运行 程序都会打印 failed to create table!
并且数据库中不会有任何具有该 table 名称的内容。
使用PQresultErrorMessage
获取您执行的SQL的错误文本,例如:
printf("%s\n", PQresultErrorMessage(re));
或 PQerrorMessage
以获取与您的连接相关的任何错误的错误文本,例如:
printf("%s\n", PQerrorMessage(connection));
这些函数的postgresql文档在这里: https://www.postgresql.org/docs/current/libpq-exec.html