3.1. C语言使用ESQLC方式连接到数据库(Linux)

本章节将介绍C程序通过ESQLC连接到GBase 8s数据库的方式。
ESQLC是CSDK的一部分,因此本操作依赖CSDK。

3.1.1. ESQL/C 是什么

GBase 8s ESQL/C 是 SQL 应用程序编程接口(API),它使您可以直接在 C 程序中嵌入结构化查询语言(SQL)语句。
GBase 8s ESQL/C 的预处理器 esql 将每个 SQL 语句和特定于 GBase 8s 的所有代码转换为 C 语言源代码,并启动 C 编译器进行编译它。

3.1.2. 示例环境介绍

操作系统:CentOS Linux release 7.9.2009 (x86_64)
数据库版本:GBase 8s v8.8_3.6.3_3x2_1
客户端连接工具:clientsdk_3.6.3_3X2_1_783c8d

3.1.3. 依赖包

[root@localhost ~]# yum install -y autoconf gcc gcc-c++ unixODBC unixODBC-devel  

3.1.4. 安装GBase ClientSDK

安装目录为/opt/gbase
参考:CSDK安装

在/etc/ld.so.conf.d目录下增加GBase 8s的库目录配置文件gbase8scsdk-x86_64.conf

[root@localhost ld.so.conf.d]# pwd
/etc/ld.so.conf.d
[root@localhost ld.so.conf.d]# more gbase8scsdk-x86_64.conf
/opt/gbase/lib
/opt/gbase/lib/cli
/opt/gbase/lib/esql

配置环境变量

export GBASEDBTDIR=/opt/gbase
export PATH=$GBASEDBTDIR/bin:$PATH
export LD_LIBRARY_PATH=$GBASEDBTDIR/lib:$GBASEDBTDIR/lib/cli:$GBASEDBTDIR/lib/esql:$LD_LIBRARY_PATH

3.1.5. 设置系统网络连接(异机:可选,也可配置为信任连接方式)

在用户目录下创建.netrc配置文件,权限为600,内容如下:

[root@localhost esqlc]# more ~/.netrc
# machine 目标主机名或IP地址 login 用户名 password 密码
machine 192.168.0.212 login gbasedbt password GBase123$%

3.1.6. ESQLC连接测试

3.1.6.1. 编译测试程序TestESQLC.ec

TestESQLC.ec内容如下:

#include <stdio.h>

main()
{
EXEC SQL BEGIN DECLARE SECTION;
    int  v_tabid;
    char v_tabname[ 128 ];
EXEC SQL END DECLARE SECTION;

    printf( "\nESQLC 测试程序开始运行.\n\n");
    EXEC SQL WHENEVER ERROR STOP;
    /* 这里connect to 的是库名 */
    EXEC SQL connect to 'testdb';

    EXEC SQL declare democursor cursor for
	select tabid,tabname
	   into :v_tabid, :v_tabname
	   from systables where tabid < 10;

    EXEC SQL open democursor;
    for (;;)
	{
	EXEC SQL fetch democursor;
	if (strncmp(SQLSTATE, "00", 2) != 0)
	    break;

	printf("%d\t%s\n", v_tabid, v_tabname);
	}

    if (strncmp(SQLSTATE, "02", 2) != 0)
        printf("SQLSTATE after fetch is %s\n", SQLSTATE);

    EXEC SQL close democursor;
    EXEC SQL free democursor;

    EXEC SQL disconnect current;
    printf("\nESQLC 测试程序结束运行.\n\n");

   exit(0);
}

3.1.6.2. 编译成可执行文件,并执行测试

[root@localhost esqlc]# esql -o TestESQLC -glu TestESQLC.ec 

[root@localhost esqlc]# ./TestESQLC 

ESQLC 测试程序开始运行.

1	systables                                                                                                                      
2	syscolumns                                                                                                                     
3	sysindices                                                                                                                     
4	systabauth                                                                                                                     
5	syscolauth                                                                                                                     
6	sysviews                                                                                                                       
7	sysusers                                                                                                                       
8	sysdepend                                                                                                                      
9	syssynonyms                                                                                                                    

ESQLC 测试程序结束运行.

最后更新日期:2025-08-19