Проблема вставки данных в 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);
Кроме того, был трейлинг; в запросе. Я не думаю, что это будет больно, но это не нужно.
-г