pgcursordb.cc
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
- /*-------------------------------------------------------------------------
- *
- * FILE
- * pgcursordb.cpp
- *
- * DESCRIPTION
- * implementation of the PgCursor class.
- * PgCursor encapsulates a cursor interface to the backend
- *
- * Copyright (c) 1994, Regents of the University of California
- *
- * IDENTIFICATION
- * $Header: /usr/local/cvsroot/pgsql/src/interfaces/libpq++/pgcursordb.cc,v 1.4 1999/06/01 02:43:37 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
-
- #include "pgcursordb.h"
-
- // ****************************************************************
- //
- // PgCursor Implementation
- //
- // ****************************************************************
- // Make a connection to the specified database with default environment
- // See PQconnectdb() for conninfo usage
- PgCursor::PgCursor(const char* conninfo, const char* cursor)
- : PgTransaction(conninfo), pgCursor(cursor)
- {}
- // Do not make a connection to the backend -- just query
- // Connection should not be closed after the object destructs since some
- // other object is using the connection
- //PgCursor::PgCursor(const PgConnection& conn, const char* cursor)
- // : PgTransaction(conn), pgCursor(cursor)
- //{}
- // Destructor: End the transaction block
- PgCursor::~PgCursor()
- {
- Close();
- }
- // ****************************************************************
- //
- // PgCursor: Cursor Interface Implementation
- //
- // ****************************************************************
- // Declare a cursor: name has already been supplied in the constructor
- int PgCursor::Declare(const string& query, int binary)
- {
- string cmd = "DECLARE " + pgCursor;
- if ( binary )
- cmd += " BINARY";
- cmd += " CURSOR FOR " + query;
- return ExecCommandOk( cmd.c_str() );
- } // End Declare()
- // Fetch ALL tuples in given direction
- int PgCursor::Fetch(const char* dir)
- {
- return Fetch("ALL", dir);
- } // End Fetch()
- // Fetch specified amount of tuples in given direction
- int PgCursor::Fetch(unsigned num, const char* dir)
- {
- return Fetch( IntToString(num), dir );
- } // End Fetch()
- // Create and execute the actual fetch command with the given arguments
- int PgCursor::Fetch(const string& num, const string& dir)
- {
- string cmd = "FETCH " + dir + " " + num + " IN " + pgCursor;
- return ExecTuplesOk( cmd.c_str() );
- } // End Fetch()
- // Close the cursor: no more queries using the cursor should be allowed
- // Actually, the backend should take care of it.
- int PgCursor::Close()
- {
- string cmd = "CLOSE " + pgCursor;
- return ExecCommandOk( cmd.c_str() );
- } // End CloseCursor()