Thread: HELP FOR POSTGRESQL NEEDED...
Hello.I am experiencing a quite strange behavior with my postgreSQL database.
I have edited the file pg_hba.conf like this:
# TYPE DATABASE IP_ADDRESS MASK AUTH_TYPE AUTH_ARGUMENT
local all password
host all 127.0.0.1 255.255.255.255 password
in order to require user authentication.This works perfectly when I connect to the database with psql or pgaccess and I'm able to perform
all kinds of queries.
However when I try to connect to the database with C++ even though it allows me to connect (providing the correct username & password)
all the queries fail...The C++ code I use is the following:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <string>
#include "libpq++.h"
using namespace std;
int main()
{
string login,pwd;
char name[10];
char query_string[256];
cout << ">username:";
cin >> login;
cout << ">password:";
cin >> pwd;
cout<<"user to search:";
cin >> name;
// Open the connection to the database and make sure it's OK
PgDatabase data("dbname=goumero");
char *pghost,*pgport,*pgoptions,*pgtty;
char *dbName;
pghost = NULL; /* host name of the backend server */
pgport = NULL; /* port of the backend server */
pgoptions = NULL; /* special options to start up the backend server */
pgtty = NULL; /* debugging tty for the backend server */
dbName = "goumero";
PGconn* conn;
conn = PQsetdbLogin(pghost,pgport,pgoptions,pgtty,dbName,login.c_str(),pwd.c_str()) ;
if (PQstatus(conn) == CONNECTION_BAD ) {
fprintf(stderr, "Connection to database '%s' failed.\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
return 1;
}
else
//Connection successful...
data.Exec("BEGIN WORK");
data.Exec("LOCK TABLE account in ACCESS EXCLUSIVE MODE");
sprintf(query_string, // create an SQL query string
"SELECT * \
FROM account \
WHERE name='%s'" , name);
if ( !data.ExecTuplesOk(query_string) ) // send the query
{
cerr << "query failed." << endl;
exit(1);
}
for (int i=0; i < data.Tuples(); i++) // loop through all rows returned
cout << data.GetValue(i,0) << endl; // print the value returned
/**************************************************************************************/
data.Exec("COMMIT WORK");
PQfinish(conn);
return 0;
} // End main()
Note:The same query above is correctly executed when I connect with psql .
Also if I remove the user authentication stuff then the same code is executed correctly.
I would be grateful if you helped me - I'm desperate....
Do You Yahoo!?
Αποκτήστε την δωρεάν σας @yahoo.gr διεύθυνση στο Yahoo! Mail.
From: "ozric tentacle" <ozric02@yahoo.gr> wrote: > However when I try to connect to the database with C++ even though it allows ? > me to connect (providing the correct username & password) Did you started postmaster with -i option ? Ciao Gaetano