我正在尝试创建客户端/服务器应用程序,但是我在服务器应用程序中遇到了一个问题。我希望服务器应用程序接受来自客户端应用程序的包含多个变量的结构,然后在“INSERT INTO”psql语句中使用这些变量值。但是,正如标题所示,我对如何编写代码存在问题。下面,你会发现我的代码的相关部分:如何在PQexecParams()中使用多个变量C
struct PersonInfo* buffer = (struct PersonInfo*)malloc(sizeof(struct
PersonInfo));
recv(serv_sock_accept, buffer, sizeof(buffer), 0);
//**Connection to database using PGconn (PGconn connection)**
PGresult* res = PQexecParams(connection,
"INSERT INTO person(first_name, last_name, age) VALUES($1, $2, $3)",
3,
NULL,
buffer->person.fname, buffer->person.lname, buffer->age,
NULL,
NULL,
0);
我不断收到在哪里,我宣布我的变量值的线,这是导致我相信,我不能在此声明多个值编译错误PQexecParams()函数的一行。我觉得我的方式是错误的,所以请你们指点我正确的方向?是否可以在一个PQexecParams()语句中的Value行上声明多个值?如果我将三个值分解为他们自己的PQexecParams()语句,数据库将创建三个单独的条目,而不是一个。
非常感谢您为我们提供的所有帮助!
嗨,非常感谢您的意见,我非常感谢。我试着做你提到的,但是如果我将值声明为“char * values [3]”,我得到一个编译器警告,声明“从不兼容的指针类型值中传递'PQexecParams'的参数5”。但是,如果我将值声明为“const char * values [3]”,则不会收到编译器警告,并且编译得很好。但是当我从客户端应用程序调用服务器时,psql语句不会执行。有任何想法吗? –
什么是整个错误行,通常是不兼容的指针错误告诉你它期望什么,它得到了什么 –
“note:expected'const char * const *'但参数的类型是'char **'extern PGresult * PQexecParams(PGconn *康恩) –