ECPG - C 中的嵌入式 SQL

嵌入式 SQL

定义
嵌入式SQL是将SQL嵌入到某一种高级语言之中,如C/C++,Java等 这种高级语言被称为宿主语言

特性
1.继承了高级语言的过程控制性
2.结合了SQL语言的复杂结果集操作的非过程性
3.为数据库操作者提供了安全可靠的操作方式:通过应用程序进行操作

ECPG

ECPG是PostgresSQL提供的,可在C语言中嵌套使用SQL语句的支持。ECPG-C的嵌套SQL编程一般要经过以下几个流程:

1.编写C语言有SQL混合的源代码文件(*.pgc)
2.使用ecpg预处理工具将.pgc转化为.c文件
3.编译/链接*.c文件生成可执行文件

如下图:
这里写图片描述

示例代码

    EXEC SQL CONNECT TO testdb USER atlasdb;
    EXEC SQL CREATE TABLE test1 (a int, b varchar(50));
    EXEC SQL INSERT INTO test1(a,b) VALUES(:v1, 'test string');

转化后的C代码

    { ECPGconnect(__LINE__, 0, "testdb" , "atlasdb" , NULL , NULL, 1); }
    { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table test1 ( a int , b varchar ( 50 ) )", ECPGt_EOIT, ECPGt_EORT);}
    { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into test1 ( a , b ) values ( $1  , 'test string' )", 
        ECPGt_int,&(v1),(long)1,(long)1,sizeof(int), 
        ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);}

使用ecpg处理*.pgc文件的指令

ecpg -t -c -I/appdb/atlasdb/pg11/include/ example.sqc 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值