Я пытаюсь создать клиент/серверное приложение, однако я столкнулся с проблемой в серверном приложении. Я хочу, чтобы серверное приложение принимало структуру, содержащую несколько переменных, из клиентского приложения, а затем использовало эти значения переменных внутри инструкции «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()? Если я разбиваю три значения на свой собственный оператор PQexecParams(), база данных будет создавать три отдельные записи, а не только одну.
Огромное спасибо за всю помощь, которую вы, ребята, предоставили мне до сих пор!
Привет, большое вам спасибо за ваш вклад, я действительно ценю это. Я попытался сделать то, что вы упомянули, но если я объявляю значения как «char * values [3]», я получаю предупреждение о компиляторе, в котором говорится о передаче аргумента 5 «PQexecParams» из несовместимого типа указателя, значения ». Однако, если я объявляю значения как «const char * values [3]», я не получаю никаких предупреждений компилятора, и он компилируется просто отлично. Но когда я вызываю сервер из своего клиентского приложения, оператор psql не выполняется. Есть идеи? –
Какова вся строка ошибки, обычно несовместимые ошибки указателя сообщают вам, что она ожидает и что она получила –
"note: expected 'const char * const *', но аргумент имеет тип 'char **' extern PGresult * PQexecParams (PGconn * Conn) –