
# 概述
本节旨在详细介绍如何在C语言程序与嵌入式SQL语句之间，利用宿主变量实现高效、安全的数据传递。
在嵌入式SQL-C程序中，C语言被视为宿主语言。凡是定义在C代码中并在EXEC SQL语句里被引用的变量，统称为宿主变量。它们是打通C语言内存空间与数据库内核数据之间的核心媒介。
数据交互的本质是C语言原生数据类型与GaussDB数据类型之间的匹配。为了确保数据在传递过程中不发生精度丢失、类型冲突或内存溢出，须深刻理解类型映射机制。在声明宿主变量时，需要根据GaussDB底层字段的属性，选择与之对应的C语言数据类型（包括初级类型、结构体、联合体及数组等），从而在预编译阶段建立精准的数据对齐。
在SQL语句中引用宿主变量时，无需手动将数据拼接至字符串中。您只需在变量名前添加冒号（:）作为前缀，ecpg预处理器即可自动识别并处理。这种参数化的引用方式不仅简化了开发，更从根本上增强了程序防御SQL注入攻击的能力。
示例如下：
```
EXEC SQL INSERT INTO sometable VALUES (:v1, 'foo', :v2);
```
该语句同时引用了两个C语言变量v1和v2。这表明在同一条SQL语句内，宿主变量可以与普通的SQL常量（如'foo'）混合使用，极大地提升了语句构建的灵活性。
