mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Postgres95 1.01 Distribution - Virgin Sources
This commit is contained in:
		
							
								
								
									
										94
									
								
								src/interfaces/libpq++/pgconnection.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								src/interfaces/libpq++/pgconnection.cc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,94 @@
 | 
			
		||||
/*-------------------------------------------------------------------------
 | 
			
		||||
 *
 | 
			
		||||
 *   FILE
 | 
			
		||||
 *	pgconnection.cc
 | 
			
		||||
 *
 | 
			
		||||
 *   DESCRIPTION
 | 
			
		||||
 *      implementation of the PGconnection class.
 | 
			
		||||
 *   PGconnection encapsulates a frontend to backend connection
 | 
			
		||||
 *
 | 
			
		||||
 * Copyright (c) 1994, Regents of the University of California
 | 
			
		||||
 *
 | 
			
		||||
 * IDENTIFICATION
 | 
			
		||||
 *    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pgconnection.cc,v 1.1.1.1 1996/07/09 06:22:18 scrappy Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *-------------------------------------------------------------------------
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "libpq++.H"
 | 
			
		||||
 | 
			
		||||
// default constructor
 | 
			
		||||
// checks environment variable for database name
 | 
			
		||||
PGconnection::PGconnection()
 | 
			
		||||
{
 | 
			
		||||
  char* name;
 | 
			
		||||
  PGenv* newenv;
 | 
			
		||||
 | 
			
		||||
  conn = NULL;
 | 
			
		||||
  result = NULL;
 | 
			
		||||
  errorMessage[0] = '\0';
 | 
			
		||||
 | 
			
		||||
  newenv = new PGenv(); // use reasonable defaults for the environment
 | 
			
		||||
  if (!(name = getenv(ENV_DEFAULT_DBASE)))
 | 
			
		||||
    return;
 | 
			
		||||
  connect(newenv, name);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// constructor -- for given environment and database name
 | 
			
		||||
PGconnection::PGconnection(PGenv* env, char* dbName)
 | 
			
		||||
{
 | 
			
		||||
  conn = NULL;
 | 
			
		||||
  result = NULL;
 | 
			
		||||
  errorMessage[0] = '\0';
 | 
			
		||||
  connect(env, dbName);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// destructor - closes down the connection and cleanup
 | 
			
		||||
PGconnection::~PGconnection()
 | 
			
		||||
{
 | 
			
		||||
  if (result)	PQclear(result);
 | 
			
		||||
  if (conn)	PQfinish(conn);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PGconnection::connect
 | 
			
		||||
// establish a connection to a backend
 | 
			
		||||
ConnStatusType
 | 
			
		||||
PGconnection::connect(PGenv* newenv, char* dbName)
 | 
			
		||||
{
 | 
			
		||||
#if 0
 | 
			
		||||
    FILE *debug;
 | 
			
		||||
    debug = fopen("/tmp/trace.out","w");
 | 
			
		||||
    PQtrace(conn, debug);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    env = newenv;
 | 
			
		||||
    fe_setauthsvc(env->pgauth, errorMessage); 
 | 
			
		||||
    conn = PQsetdb(env->pghost, env->pgport, env->pgoption, env->pgtty, dbName);
 | 
			
		||||
    if(strlen(errorMessage))
 | 
			
		||||
      return CONNECTION_BAD;
 | 
			
		||||
    else
 | 
			
		||||
      return status();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PGconnection::status -- return connection or result status
 | 
			
		||||
ConnStatusType
 | 
			
		||||
PGconnection::status()
 | 
			
		||||
{
 | 
			
		||||
    return PQstatus(conn);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PGconnection::exec  -- send a query to the backend
 | 
			
		||||
ExecStatusType
 | 
			
		||||
PGconnection::exec(char* query)
 | 
			
		||||
{
 | 
			
		||||
  if (result)
 | 
			
		||||
    PQclear(result); 
 | 
			
		||||
 | 
			
		||||
  result = PQexec(conn, query);
 | 
			
		||||
  if (result)
 | 
			
		||||
      return PQresultStatus(result);
 | 
			
		||||
  else {
 | 
			
		||||
      strcpy(errorMessage, PQerrorMessage(conn));
 | 
			
		||||
      return PGRES_FATAL_ERROR;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user