# The C++ Classes

> The principle class for most eXtremeSQL C++ applications is McoSqlEngine or for multi-threaded applications McoMultithreadedSqlEngine. However, functionality for managing transactions and executing prepared statements is provided in the McoSqlSession class. The McoSqlEngine instance may use McoSqlOpenParameters to specify parameters for opening a database. The McoSqlEngine method `executeQuery()` returns QueryResult instance which provides a number of method for processing query result sets.

> Access to remote SQL server is provided by class RemoteSqlEngine and an application can create a SQL server by instantiating SqlServer.

> Please use the links below to view the individual class details:

> SqlEngine | Implements functionality common to subclasses McoSqlEngine , McoMultithreadedSqlEngine, RemoteSqlEngine and SqlServer
> McoSqlEngine | Implements eXtremeSQL database `open(), close(), executeStatement()`, etc.
> McoMultithreadedSqlEngine | Implements eXtremeSQL database multi-threaded and distributed SQL access
> McoSqlOpenParameters | Specifies parameters for opening an McoSqlEngine instance
> SqlOptimizerParameters | Specifies options for tuning performance of the SQL engine.
> McoSqlSession | Used to share a single database connection between multiple threads
> RemoteSqlEngine | Implements eXtremeSQL database remote server access
> DistributedSqlEngine | Implements eXtremeSQL client interface for distributed execution of SQL queries
> AsyncDistributedSqlEngine | Implements eXtremeSQL client interface for distributed asynchronous execution of multiple SQL queries
> SqlServer | Executes client SQL requests.
> Transaction | Provides the capability of interacting directly with a transaction that performs a number of database operations
> QueryResult | Data set for SQL query results
> DataSource | This is an abstract class and cannot be instantiated directly; it is instead typically instantiated though a QueryResult object
> Cursor | Provides an iterator object for scrolling through the individual rows of a result set in a QueryResult
> Table | Provides access to the tables in an eXtremeDB database
> Record | A database record; typically a row of a result set
> Field | Represents a field in a database Record
> String | Provides methods for handling character stings
> Struct | Provides methods for handling compound structure Values
> Array | Provides methods for handling Arrays of Values
> NullableArray | Provides methods for handling Arrays of Values with possible null values
> List | Provides methods common to Strings and Arrays.
> Index | Represents a database table index
> Key | Represents a component in an Index
> Sequence | The generic class for managing database fields of type sequence.
> Value | A generic base class that implements the methods for classes List, Array, String, Struct and Record