idtest表的結構:
其中id字段爲自動編號字段,name字段用於保存程序中用戶輸入的內容,adding_time字段用於保存記錄的插入時間。
#include <libpq-fe.h>
#include <string.h>
#pragma comment(lib, "libpq.lib")
void test(PGconn *conn)
{
char buffer[30];
char *p = buffer; // 變量buffer本身無法取地址, 所以定義一個和buffer相同的p指針, p可以取地址
ExecStatusType status;
int n;
PGresult *res;
printf("請輸入用戶名: ");
fgets(buffer, sizeof(buffer), stdin);
n = (int)strlen(buffer) - 1;
if (buffer[n] == '\n') // 去掉最後的換行符
buffer[n] = '\0';
res = PQexecParams(conn, "INSERT INTO idtest (name) VALUES ($1) RETURNING id", 1, NULL, &p, NULL, NULL, 0);
status = PQresultStatus(res);
if (status == PGRES_TUPLES_OK)
printf("添加用戶成功! 新用戶的ID號爲: %s\n", PQgetvalue(res, 0, 0));
else
printf("%s", PQresultErrorMessage(res));
PQclear(res);
}
int main(void)
{
ConnStatusType status;
PGconn *conn;
conn = PQconnectdb("postgresql://localhost/mydb");
status = PQstatus(conn);
if (status == CONNECTION_OK)
{
printf("連接數據庫成功!\n");
test(conn);
}
else if (status == CONNECTION_BAD)
printf("連接數據庫失敗!\n");
PQfinish(conn);
return 0;
}
程序運行結果: