用pqexecParams 预备语句多添加几列属性插入中文
时间: 2024-06-09 09:06:00 浏览: 14
您可以使用以下代码示例向PostgreSQL数据库中的表中插入多个属性和中文值:
```
#include <libpq-fe.h>
#include <stdlib.h>
#include <string.h>
int main() {
PGconn *conn = PQconnectdb("dbname=mydb user=myuser password=mypassword host=myhost port=myport");
if (PQstatus(conn) != CONNECTION_OK) {
fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
const char *sql = "INSERT INTO mytable (name, age, gender, address) VALUES ($1, $2, $3, $4)";
const char *params[4] = {"张三", "25", "男", "北京市海淀区"};
// Prepare statement
PGresult *res = PQprepare(conn, "insert_stmt", sql, 4, NULL);
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "Prepare statement failed: %s", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
PQclear(res);
// Execute statement with parameters
const char *paramValues[4] = {params[0], params[1], params[2], params[3]};
const int paramLengths[4] = {strlen(params[0]), strlen(params[1]), strlen(params[2]), strlen(params[3])};
const int paramFormats[4] = {0, 0, 0, 0};
res = PQexecPrepared(conn, "insert_stmt", 4, paramValues, paramLengths, paramFormats, 0);
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
fprintf(stderr, "Execute statement failed: %s", PQerrorMessage(conn));
PQfinish(conn);
exit(1);
}
PQclear(res);
PQfinish(conn);
return 0;
}
```
在此示例中,我们使用 `PQprepare` 函数准备了一个包含4个参数的预备语句,并将其命名为 "insert_stmt"。然后,我们使用 `PQexecPrepared` 函数执行该预备语句,并将参数以数组的形式传递给该函数。在这个例子中,我们向 "mytable" 表中插入了 "name","age","gender" 和 "address" 四个属性的值。其中,"name" 和 "address" 属性的值为中文。我们将参数的长度和格式都设置为0,表示参数为文本形式。
请注意,为了使插入的中文字符正确显示,您需要确保数据库中的编码方式和客户端代码中的编码方式相同。在本例中,我们假设数据库和客户端代码都使用UTF-8编码。