ITPub博客

首页 > 数据库 > 国内数据库 > Linux 环境实战:C 语言通过 ESQL/C 连接 GBase 8s 数据库全指南

Linux 环境实战:C 语言通过 ESQL/C 连接 GBase 8s 数据库全指南

原创 国内数据库 作者:GBASE南大通用 时间:2025-07-18 16:12:02 0 删除 编辑

在 Linux 环境中,使用 C 语言通过 ESQL/C 方式连接南大通用 GBase 8s 数据库是常见的开发需求。ESQL/C 是一种允许在 C 程序中嵌入 SQL 语句的技术。通过 ESQL/C,开发者可以在 C 程序中直接操作数据库,实现数据的增删改查等功能。本文将通过一个完整的示例,详细介绍如何在 Linux 下通过 ESQL/C 连接 GBase 8s 数据库,包括环境搭建、代码编写、编译和运行等步骤。




ESQL/C 代码示例

以下是一个完整的 ESQL/C 示例代码,展示如何连接到 GBase 8s 数据库并执行一些基本操作。



示例代码



#include <stdio.h>

EXEC SQL define NAME_LEN 20;

EXEC SQL define ADDRESS_LEN 200;

main()

{

EXEC SQL BEGIN DECLARE SECTION;

int rnum;

int snum;

char sname[NAME_LEN + 1];

char saddress[ADDRESS_LEN + 1];

EXEC SQL END DECLARE SECTION;

EXEC SQL WHENEVER ERROR STOP;

EXEC SQL connect to 'testzh';

// Drop table

EXEC SQL drop table if exists tab2;

printf("Drop table successfully.\n\n");

// Create table

EXEC SQL create table tab2 (num int, name char(20), address varchar2(200));

printf("Create table successfully.\n\n");

// Insert without using host variables

EXEC SQL insert into tab2 values (1, "Jack", "Beijing");

printf("Insert (without using host variables) successfully.\n\n");

// Insert using host variables

snum = 2;

sprintf(sname, "Mary");

sprintf(saddress, "Shanghai");

EXEC SQL insert into tab2 values (:snum, :sname, :saddress);

printf("Insert (with using host variables) successfully.\n\n");

// Use a static SQL statement to select data

EXEC SQL declare mycursor1 cursor for

select num, name, address from tab2;

EXEC SQL open mycursor1;

printf("The output of the first select statement:\n");

for (;;)

{

EXEC SQL fetch mycursor1 into :snum, :sname, :saddress;

if (strncmp(SQLSTATE, "00", 2) != 0)

break;

printf("%d %s %s\n", snum, sname, saddress);

}

if (strncmp(SQLSTATE, "02", 2) != 0)

printf("SQLSTATE after fetch is %s\n", SQLSTATE);

EXEC SQL close mycursor1;

EXEC SQL free mycursor1;

// Use a dynamic SQL statement to select data

EXEC SQL prepare mystmt from "select num, name, address from tab2 where num = ?";

EXEC SQL declare mycursor2 cursor for mystmt;

rnum = 2;

EXEC SQL open mycursor2 using :rnum;

printf("\nThe output of the second select statement:\n");

for (;;)

{

EXEC SQL fetch mycursor2 into :snum, :sname, :saddress;

if (strncmp(SQLSTATE, "00", 2) != 0)

break;

printf("%d %s %s\n", snum, sname, saddress);

}

if (strncmp(SQLSTATE, "02", 2) != 0)

printf("SQLSTATE after fetch is %s\n", SQLSTATE);

EXEC SQL close mycursor2;

EXEC SQL free mystmt;

EXEC SQL free mycursor2;

EXEC SQL disconnect current;

exit(0);

}




编译和运行

1、将代码保存为Demo.ec文件。


2、使用esql命令编译:


esql Demo.ec



3、编译生成的 C 文件:


gcc -o Demo Demo.c -I${GBASEDBTDIR}/include -L${GBASEDBTDIR}/lib -lcli



4、运行程序:


./Demo


 


程序运行结果

运行上述程序后,你将看到以下输出:


Drop table successfully.

Create table successfully.

Insert (without using host variables) successfully.

Insert (with using host variables) successfully.

The output of the first select statement:

1 Jack Beijing

2 Mary Shanghai

The output of the second select statement:

2 Mary Shanghai




通过本文的介绍,相信您已经了解了如何在 Linux 下通过 ESQL/C 连接 GBase 8s 数据了。

————————————————

版权声明:本文为CSDN博主「GBASE数据库」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_47390342/article/details/149278967


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3091617/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1314
  • 访问量
    1291961