我的朋友,
我希望将 PostgreSQL libpqtypes 库与来自 C 应用程序的现有数据库一起使用。
我必须执行的一条 SQL 语句是插入到具有可为空的 int 列的表中。它有一个模式,我在这里简化为:
create table t (
a int null
);
我一直在阅读 libpqtypes PQputf 和 PQexecf 函数的文档,但我没有看到如何将 SQL 空值传递给参数化 SQL 语句!
我不想传递 C NULL 值,因为这是一个 int 列,我希望存储在 DB 中的值是 SQL null,而不是 0。所以我不想这样做:
PQexecf(conn, "INSERT INTO t (a) VALUES (%int4)", NULL);
虽然我可以在生成传递给 PQexecf 的插入 SQL 语句格式字符串时直接包含 null,但我不希望这样做,因为有时我必须插入一个非 null 值。所以我不想这样做:
PQexecf(conn, "INSERT INTO t (a) VALUES (null)");
我的愿望和抱负是在调用 PQexecf 时使用一个通用格式的 SQL 插入语句字符串,并在我没有值时以某种方式传入一个空参数值。我想做这样的事情,其中 SQL_NULL 是告诉 libpqtypes 应该将 SQL null 插入数据库的某种方式:
void insert(int *a) {
/* Other source codes. */
PQexecf(conn, "INSERT INTO t (a) VALUES (%int4)", a ? *a : SQL_NULL);
/* Other source codes. */
}
这可能吗?我该怎么做?
非常非常感谢您!