/* * testlibpq4.cc * Test the C++ version of LIBPQ, the POSTGRES frontend library. * tests the copy in features * */ #include #include "libpq++.H" main() { char* dbName; /* begin, by creating the parameter environment for a backend connection. When no parameters are given then the system will try to use reasonable defaults by looking up environment variables or, failing that, using hardwired constants */ PGenv env; PGdatabase* data; dbName = getenv("USER"); /* change this to the name of your test database */ /* make a connection to the database */ data = new PGdatabase(&env, dbName); /* check to see that the backend connection was successfully made */ if (data->status() == CONNECTION_BAD) { fprintf(stderr,"Connection to database '%s' failed.\n", dbName); fprintf(stderr,"%s",data->errormessage()); delete data; exit(1); } /* start a transaction block */ if(data->exec("BEGIN") != PGRES_COMMAND_OK) { fprintf(stderr,"BEGIN command failed\n"); delete data; exit(1); } if (data->exec("CREATE TABLE foo (a int4, b char16, d float8)") != PGRES_COMMAND_OK) { fprintf(stderr,"CREATE TABLE foo command failed\n"); delete data; exit(1); } if (data->exec("COPY foo FROM STDIN") != PGRES_COMMAND_OK) { fprintf(stderr,"COPY foo FROM STDIN\n"); delete data; exit(1); } data->putline("3\thello world\t4.5\n"); data->putline("4\tgoodbye word\t7.11\n"); data->putline(".\n"); data->endcopy(); data->exec("SELECT * FROM foo"); data->printtuples(stdout,1,"|",1,0); data->exec("DROP TABLE foo"); // end the transaction data->exec("END"); // close the connection to the database and cleanup delete data; }