Здравствуйте, подскажите пожалуйста почему я получаю ошибку типа Syntax error at or near @,
Почему я не могу в запросе передавать символы, а также цифры.
как правильно организовать запрос через библиотеку libpq.
В чем моя ошибка?
int main() { const char *conninfo; PGconn *conn; int nnotifies; PGnotify *notify; string EmailToDB = "gfdgfdshj@mail.ru"; string PswdToDb = "1234"; const char *paramValues[2] = { (char *)&EmailToDB, (char *)&PswdToDb }; conninfo = "hostaddr = '192.168.0.130' port = '5432' dbname = 'reg_user' user = 'postgres' password = 'pass' connect_timeout = '2'"; conn = PQconnectdb(conninfo); IF (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn)); } else { printf("Good Done \n"); string INSERT = "CREATE USER '/" + EmailToDB + "/' WITH PASSWORD " + PswdToDb +";"; printf("SQL: %d\n",INSERT); PGresult *res = PQexec(conn, INSERT.c_str()); fprintf(stderr, "UserCreeate: %s", PQerrorMessage(conn)); PQfinish(conn); } system("pause"); RETURN 0;
Я пробовал использовать
PQexecParams(conn, "CREATE USER $1::char WITH PASSWORD $2::char ;", 2, /* one param */ NULL, /* let the backend deduce param type */ paramValues, NULL, /* don't need param lengths since text */ NULL, /* default to all text params */ 0); /* ask for binary results */
Ошибка появляется даже в случае прямой передачи без переменных
// string INSERT =
Правильный запрос должен выглядить так:
CREATE USER abrakadabra WITH PASSWORD '123';
без всяких символов левых в логине. Вы вообще пробовали выполнять свои запросы через стандартные средства, например, pgadmin?
Пробовал, все создается без
Пробовал, все создается без проблем.
На одном из форумов подсказали частичный вариант решения
В таком случае первая переменная USER обрабатывается без проблем, она дожна быть экранированна, пароль все еще никак передать не могу.
Таже самая ошибка...если без пароля строка типа
Строка обрабатывается отлично