Member Functions | |||
acquire() asString() clear() errorHandler() |
execute() isReady() isValid() operator=() |
release() setErrorHandler() status() table() |
where() |
#include <rw/db/deleter.h> RWDBDeleter deleter = myTable.deleter();
RWDBDeleter is an encapsulation of an SQL DELETE statement.
The where() method of RWDBDeleter is used to specify a WHERE clause. The WHERE clause is encapsulated by an RWDBCriterion, which is some number of RWDBExprs combined with logical operators.
A DELETE statement does not normally produce results. However, DBTools.h++ recognizes that some database vendors provide triggers, which can cause results to be generated by a DELETE statement. Consequently, the execute() method of RWDBDeleter returns an RWDBResult, which is a sequence of zero or more RWDBTables. Applications are not obliged to request any tables from the returned object.
RWDBDeleter is designed around the Interface/Implementation paradigm. An RWDBDeleter instance is an interface to a reference-counted implementation; copy constructors and assignment operators produce additional references to a shared implementation. An RWDBDeleter implementation is a base class from which a family of database-specific deleter implementations is derived.
For this example, we delete all the red hubcaps from the autoParts table:
RWDBTable autoParts = myDbase.table("autoParts"); RWDBDeleter deleter = autoParts.deleter(); deleter.where(autoParts["name"] == "hubcap" && autoParts["color"] == "red"); deleter.execute();
For this example, we delete all parts with a specific id by repeatedly using binding to a variable containing the id:
RWDBTable allParts = myDbase.table( "AllParts" ); RWDBConnection connection = myDbase.connection(); RWDBDeleter deleter = allParts.deleter(); int id = 1001; deleter.where( allParts["id"] == RWDBBoundExpr( &id ) ); deleter.execute(connection); // delete part number // 1001 id = 2001; deleter.execute(connection); // delete part number // 2001
The encapsulated WHERE clause of an RWDBDeleter is an RWDBCriterion, which is composed of RWDBExprs. See RWDBCriterion, RWDBExpr, and RWDBColumn for details.
The result of execute() is an RWDBResult, which represents a sequence of zero or more RWDBTables. See RWDBResult and RWDBTable for details.
RWDBDeleter();
The default constructor creates an RWDBDeleter whose status is RWDBStatus::notInitialized. This constructor is provided as a convenience, for example, to declare an array of RWDBDeleters. Usable RWDBDeleters are obtained from RWDBTables.
RWDBDeleter(const RWDBDeleter& deleter);
Copy constructor. Self shares an implementation with deleter.
RWDBDeleter& operator=(const RWDBDeleter& deleter);
Assignment operator. Self shares an implementation with deleter.
void acquire() const;
Attempts to acquire the internal mutex lock. If the mutex is already locked by another thread, the function blocks until the mutex is released. This function can be called from a const object. Note: in nonmultithreaded builds, this function evaluates to a no-op.
RWCString asString() const;
Returns the SQL equivalent of DELETE FROM table [ WHERE ...].
void clear();
Clear self's WHERE clause and internal controls.
RWDBStatus::ErrorHandler errorHandler() const;
Returns the error handler attached to self.
RWDBResult execute();
Uses a default database connection to cause the SQL statement encapsulated by self to be executed. The connection is held by the RWDBResult until the RWDBResult is destroyed.
RWDBResult execute(const RWDBConnection& connection);
Uses the supplied connection to cause the SQL statement encapsulated by self to be executed. The connection is held by the RWDBResult until the RWDBResult is destroyed. This function can behave asynchronously if executed using an asynchronous connection.
RWBoolean isReady() const;
This function returns TRUE if the object is in ready state, indicating that accessing the object will not block. Accessing a nonready object may potentially block.
RWBoolean isValid() const;
Returns TRUE if self's status is RWDBStatus::ok, otherwise returns FALSE. Does not return FALSE if the previous executed statement failed. You must check the status of the RWDBResult returned from execute() instead of the status of the RWDBDeleter object.
void release() const;
Releases a previously acquired mutex. This function can be called from a const object. Note: in nonmultithreaded builds, this function evaluates to a no-op.
void setErrorHandler(RWDBStatus::ErrorHandler handler);
Installs handler as self's error handler. The supplied handler is inherited by all objects produced by self. By default, the error handler of an RWDBDeleter is inherited from the object that produced it; this method overrides the default. ErrorHandler is declared as a typedef within the scope of RWDBStatus:
typedef void (*ErrorHandler)(const RWDBStatus&);
RWDBStatus status() const;
Returns the current status of self.
RWDBTable table() const;
Returns the RWDBTable that produced self. Returns an RWDBTable whose status is RWDBStatus::notInitialized if self was produced with the default constructor.
RWDBCriterion where() const;
Returns a copy of self's RWDBCriterion, an encapsulated SQL WHERE clause. Returns an empty RWDBCriterion if self has no WHERE clause.
RWDBDeleter& where(const RWDBCriterion& criterion);
Specifies criterion as self's SQL WHERE clause. If self already has a WHERE clause, this method replaces it. Specifying an empty criterion clears self's WHERE clause. Notice that a deleter without a WHERE clause deletes all rows from its table. Returns a reference to self.
©Copyright 1999, Rogue Wave Software, Inc.
Contact Rogue Wave about documentation or support issues.