ecpg的demo
时间: 2024-02-24 15:57:30 浏览: 55
ECPG是PostgreSQL的一个扩展,提供了将SQL语句嵌入到C程序中的功能。以下是一个简单的ECPG demo:
```
#include <stdlib.h>
#include <stdio.h>
#include <ecpglib.h>
/* exec sql begin declare section */
char name[20];
/* exec sql end declare section */
int main() {
/* exec sql begin declare section */
char conninfo[100] = "user=postgres password=123456 dbname=test";
PGconn *conn;
PGresult *res;
/* exec sql end declare section */
/* exec sql connect to :conninfo */
{ ECPGconnect(__LINE__, 0, conninfo , NULL, NULL , NULL, 0); }
if (sqlca.sqlcode < 0) {
printf("Connect failed\n");
exit(1);
}
printf("Enter name: ");
scanf("%s", name);
/* exec sql select count(*) into :count from test where name=:name */
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select count(*) from test where name=$1",
ECPGt_char,&name,(long)20,(long)1,(long)20, ECPGt_EOIT,
ECPGt_int,&(count),(long)sizeof(count),(long)1,(long)sizeof(int), ECPGt_EORT); }
if (sqlca.sqlcode < 0) {
printf("Query failed\n");
exit(1);
}
printf("Count: %d\n", count);
/* exec sql commit */
{ ECPGtrans(__LINE__, NULL, "commit");}
if (sqlca.sqlcode < 0) {
printf("Commit failed\n");
exit(1);
}
/* exec sql disconnect all */
{ ECPGdisconnect(__LINE__, "all");}
return 0;
}
```
这个demo连接到了PostgreSQL数据库,从用户输入中获取名字,查询test表中该名字的记录数,并输出结果。需要注意的是,ECPG中的SQL语句需要放在`exec sql begin declare section` 和 `exec sql end declare section`之间,在C程序中使用时需要使用`ECPGdo`函数执行。
阅读全文