执行SQL语句
通过连接对象,使用PQexec函数执行SQL查询语句。可以执行各种类型的SQL查询,例如SELECT查询、插入数据、更新数据、删除数据等。但如果同时执行多个SQL语句作为一个事务,应该使用事务控制功能,例如执行BEGIN、COMMIT、ROLLBACK 等SQL语句来控制事务的开始、提交和回滚。同时也需要注意执行SQL查询后的错误处理。
示例如下(完整示例请参考数据库建连、执行SQL并返回结果):
/*
* 连接成功后
* 测试实例涉及游标的使用时候必须使用事务块
* 把全部放在一个 "select * from pg_database"
* PQexec() 里,过于简单,不推荐使用
*/
/* 开始一个事务块 */
res = PQexec(conn, "BEGIN");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
/*
* 在结果不需要的时候PQclear PGresult,以避免内存泄漏
*/
PQclear(res);
/*
* 从系统表 pg_database(数据库的系统目录)里抓取数据
*/
res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database");
if (PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}
PQclear(res);
res = PQexec(conn, "FETCH ALL in myportal");
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn));
PQclear(res);
exit_nicely(conn);
}