From: ozric tentacle <ozric02@yahoo.gr>
To: pgsql-questions@postgresql.org
To: pgsql-interfaces@postgresql.org
Subject: HELP FOR POSTGRESQL NEEDED...
Date: Sat, 6 Jul 2002 13:22:44 +0100 (BST)
Message-ID: <20020706122244.55874.qmail@web13106.mail.yahoo.com> (raw)
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.
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: ozric02@yahoo.gr, pgsql-questions@postgresql.org
Subject: Re: HELP FOR POSTGRESQL NEEDED...
In-Reply-To: <20020706122244.55874.qmail@web13106.mail.yahoo.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox