Проблема вставки данных в PostgreSQL через libpqxx

У меня есть база данных, которая называется mydb со столом People(id, name),

Я хочу вставить строку в эту таблицу, используя pqxx C++ интерфейс.

SQL-запрос довольно прост INSERT INTO people (id, name) VALUES (1, "Bob");

Код C++ находится здесь:

#include <pqxx/pqxx>

using namespace std;

int main(int, char *argv[])
{
  pqxx::connection conn( /* some stuff here */ );

  conn.prepare("insert_to_people", "insert into people (id, name) values ($1, $2);");
  pqxx::work pq(conn);

  pq.prepared("insert_to_people")(1)("Bob").exec();
  pq.commit();

  return 0;
}

Но я получаю следующее исключение:

terminate called after throwing an instance of 'pqxx::usage_error'
  what():  Too many arguments for prepared statement insert_to_people: expected 0, received 2
Aborted (core dumped)

Что случилось?

1 ответ

Решение

Прошло несколько лет с тех пор, как я использовал C++! Глядя на документ, кажется, что типы аргументов должны быть объявлены? Может быть, это будет работать:

conn.prepare("insert_to_people", "insert into people (id, name) values ($1, $2)")("integer")("varchar", pqxx::prepare::treat_string);

Кроме того, был трейлинг; в запросе. Я не думаю, что это будет больно, но это не нужно.

Другие вопросы по тегам