kexi
KexiDB::Parser Class Reference
#include <parser.h>
Detailed Description
Parser for SQL statements.The best and prefeerred way to run queries is using the KexiDB::Parser functionality and use the resulting QuerySchema object since this offers a database-backend-independent way to deal with SQL statements on the one hand and offers high level functionality on the other. Also BLOBs like images are handled that way.
For example if we like to use the SELECT statement "SELECT dir.path, media.filename FROM dir, media WHERE dir.id=media.dirId AND media.id=%s" we are able to use the Connection::prepareStatement method which takes the type of the statement (in our case PreparedStatement::SelectStatement ), a list of fields (in our case dir.path and media.filename) and returns a PreparedStatement::Ptr instance. By using the QuerySchema::addRelationship and QuerySchema::addToWhereExpression methods the SQL statement could be extended with relationships and WHERE expressions.
For more, see KexiDB::PreparedStatement and Connection::selectStatement() . A more complex example that looks at what the user has defined and carefully builds KexiDB::QuerySchema object, including the WHERE expression can be found in the Query Designer's source code in the method KexiQueryDesignerGuiEditor::buildSchema().
Definition at line 112 of file parser.h.
Public Types | |
enum | OPCode { OP_None = 0, OP_Error, OP_CreateTable, OP_AlterTable, OP_Select, OP_Insert, OP_Update, OP_Delete } |
Public Member Functions | |
Parser (Connection *connection) | |
bool | parse (const QString &statement) |
void | clear () |
OPCode | operation () const |
QString | operationString () const |
TableSchema * | table () |
QuerySchema * | query () |
Connection * | db () const |
ParserError | error () const |
QString | statement () const |
void | setOperation (OPCode op) |
void | createTable (const char *t) |
void | setQuerySchema (QuerySchema *query) |
QuerySchema * | select () const |
void | setError (const ParserError &err) |
bool | isReservedKeyword (const char *str) |
Protected Member Functions | |
void | init () |
Protected Attributes | |
ParserError | m_error |
ParserPrivate * | d |
Member Enumeration Documentation
The operation-code of the statement.
Constructor & Destructor Documentation
Parser::Parser | ( | Connection * | connection | ) |
constructs an empty object of the parser
- Parameters:
-
connection is used for things like wildcard resolution. If 0 parser works in "pure mode"
Definition at line 31 of file parser.cpp.
Member Function Documentation
bool Parser::parse | ( | const QString & | statement | ) |
void Parser::clear | ( | ) |
Parser::OPCode Parser::operation | ( | ) | const |
QString Parser::operationString | ( | ) | const |
TableSchema * Parser::table | ( | ) |
- Returns:
- a pointer to a KexiDBTable on CREATE TABLE or 0 on any other operation or error. Returned object is owned by you. You can call this method only once every time after doing parse(). Next time, the call will return 0.
Definition at line 67 of file parser.cpp.
QuerySchema * Parser::query | ( | ) |
- Returns:
- a pointer to KexiDBSelect if 'SELECT ...' was called or 0 on any other operation or error. Returned object is owned by you. You can call this method only once every time after doing parse(). Next time, the call will return 0.
Definition at line 69 of file parser.cpp.
Connection * Parser::db | ( | ) | const |
- Returns:
- a pointer to the used database connection or 0 if not set You can call this method only once every time after doing parse(). Next time, the call will return 0.
Definition at line 71 of file parser.cpp.
ParserError Parser::error | ( | ) | const |
- Returns:
- detailed information about last error. If no error occurred ParserError isNull()
Definition at line 73 of file parser.cpp.
QString Parser::statement | ( | ) | const |
- Returns:
- the statement passed on the last parse method-call.
Definition at line 75 of file parser.cpp.
bool Parser::isReservedKeyword | ( | const char * | str | ) |
- Returns:
- true if the
- Parameters:
-
str is an reserved keyword (see tokens.cpp for a list of reserved keywords).
Definition at line 110 of file parser.cpp.
Member Data Documentation
ParserError KexiDB::Parser::m_error [protected] |
The documentation for this class was generated from the following files: