|
|
|
SQLAPI++ Library
SQLAPI++ is a C++ library for accessing multiple SQL databases
(Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL,
PostgreSQL and ODBC, SQLite). It uses native APIs of target DBMS so
applications developed with SQLAPI++ library run swiftly and
efficiently. The product also provides a low-level interface that
allows developers to access database-specific features. By
encapsulating a vendor's API, SQLAPI++ library acts as middleware and
delivers database portability. See details on supporting SQL database
servers on different platforms:
| Server |
Win32 |
Linux/Unix |
| Oracle Database Server |
Supported (OCI) |
Supported (OCI) |
| Microsoft SQL Server |
Supported (DB-Library, OLE DB) |
FreeTDS ODBC driver should be used
|
| Sybase |
Supported (Open Client, ASE & ASA) |
Supported (Open Client, ASE & ASA) |
| DB2 |
Supported (DB2 CLI) |
Supported (DB2 CLI) |
| Informix |
Supported (Informix CLI) |
Supported (Informix CLI) |
| InterBase/Firebird |
Supported |
Supported |
| Centura (formerly Gupta) SQLBase |
Supported (CAPI) |
Supported (CAPI) |
| MySQL |
Supported (MySQL C API) |
Supported (MySQL C API) |
| PostgreSQL |
Supported (libpq) |
Supported (libpq) |
| ODBC |
Supported |
Supported (iODBC, see www.iodbc.org) |
SQLite
|
Supported
|
Supported |
Currently SQLAPI++ library supports the following C/C++
compilers:
- Microsoft Visual C++
- Borland C++ Builder
- GNU project C and C++ compiler
Why use SQLAPI++?
- SQLAPI++ directly calls native API's of target DBMSs
(unlike ADO which uses OLEDB and/or ODBC intermediate layer). That's
why SQLAPI++ is the fastest way to manage you data.
- No need (vs ADO) to install and configure OLEDB and/or ODBC
drivers when developing and distributing your applications.
- Low-level interface that allows developers to access
database-specific features.
- SQLAPI++ ships with all the sources.
- Free lifetime support, bugs fixing and new version updates.
Examples
Steps
Step 1. Connecting to
database (and error handling)
Step 2. Executing a simple SQL
command
Step 3. Binding input
parameters
Step 4. Executing a select
query (and fetching result set)
Step 5. Binding LongBinary,
LongChar, BLob and CLob data
Step 6. Fetching LongBinary,
LongChar, BLob and CLob data
Step 7. Multithreading support
and canceling queries
Advanced Examples
Using Oracle REF CURSORs
Using Oracle nested cursors
Fetching records in bulk
History
| 2 July 2010 |
|
Version 3.7.32 of SQLAPI++ library released.
New features:
- SQLite: Now (if "SQLiteDateValueType" = "DOUBLE") SQLAPI++
interprets a datetime value as a Julian Day JD double value (before we
used SADateTime interpretation).
- SQLite: Added "SQLiteDateValueType" option, SQLAPI++ uses
"YYYY-MM-DD HH:MM:SS.SSS" formatted strings for date/time parameters by
default.
- SQLite: Changed "SQLiteDateTypes" option default value (now it's "DATE,DATETIME,TIME,TIMESTAMP").
- MySQL: Fixed bug with the binding of zero-length blob- and byte- fields (thanks Taneli Otala).
- Sybase: Connection options "SYBINTL.LIBS", "SYBCOMN.LIBS", "SYBTCL.LIBS", "SYBCT.LIBS", "SYBCS.LIBS" added.
- General: Fixed problem with MacOS X and asctime_r function (thanks Michael Dickey).
- General: More information provided if DBMS API loading fails.
- General: 8-byte data length is allowed for SA_dtULong type.
- SQLite: SA_STATIC_SQLITE build option added.
- SQLite: The server/client version number is returned in common format now (hi- and low-word parts).
- Oracle: SQLT_FLT binding type is used instead of SQLT_BDOUBLE even when it's supported by OCI.
- General: SA_MANIFEST_EMB build option added.
|
| 24 March 2010 |
|
Version 3.7.31 of SQLAPI++ library released.
New features:
- ODBC: Numeric data truncation bug fixed (thanks Gebert, Alfred).
- SQLServer: OLEDB and ODBC, fixed bug with long/LOB data binding (thanks Thomas Häußermann).
- SQLServer: OLEDB, added DBPROP_COMMITPRESERVE command parameter.
- ODBC: fixed bug with long/LOB data binding.
- Sybase: Bind ' ' character for empty procedure parameter strings (thanks Vlad Imshenetskiy).
- General: Borland C++ 5.2 fixes.
|
| 10 February 2010 |
|
Version 3.7.30 of SQLAPI++ library released.
New features:
- General: Added new methods - SAConnection::Reset() and SACommand::Reset().
- PostgreSQL: Fixed memory leak when "UseCursor" option is set (thanks Vlad Romascanu).
- Oracle: Fixed problem with OCI version 8.1.x and 9.0.x.
- SQLServer: Fixed bug with unsigned 32-bit integer parameters (thanks Kyle Stock).
- SQLServer: Fixed problem with [n]varchar|varbinary(max) output parameters (thanks Alfred Gebert).
- SQLServer: Fixed bug with SAParam::setAsBool method (thanks Jacob Pedersen).
- General: Performance improved (Christian Zink).
- Sybase: Fixed bug in error handling (thanks Volodymyr Drobot).
- MySQL: Fixed bug with UTF-8 client charcter set and BLob binding (Jason Tai).
- SQLServer: Fixed SA_tdBool data binding (thanks Jacob Pedersen).
- DB2: Fixed problem with prefetching on 64-bit platforms (thanks Cal Heldenbrand).
- Oracle: Added experimental scrollable cursor support (thanks combit.net and Alexander Horak).
- SQLServer: Added native (ODBC) API support.
- PostgreSQL: Connection option "UseDLLonWin32" replaced by "LIBPQ.LIBS" (can define several library names).
- ODBC: Connection option "UseManagerOnUNIX" replaced by "ODBC.LIBS" (also can define several library names).
- MySQL: Connection option "MYSQL.LIBS" added (can define several library names).
- Oracle: Connection option "OCI8.LIBS" added (can define several library names).
- DB2: Connection option "DB2CLI.LIBS" added (can define several library names).
- Informix: Connection option "INFCLI.LIBS" added (can define several library names).
- SQLBase: Connection option "SQLBASE.LIBS" added (can define several library names).
- SQLite: Connection option "SQLITE.LIBS" added (can define several library names).
- InterBase: Connection option "ClientLibraryName" replaced by "IBASE.LIBS" (also can define several library names).
- Sybase: Bind ' ' character for empty procedure parameter strings (thanks Vlad Imshenetskiy).
- Sybase: SA_PARAM_USE_DEFAULT support added.
|
| 14 October 2009 |
|
Version 3.7.29 of SQLAPI++ library released.
New features:
- General: Added Borland compilation option SA_MINDEP.
Now dynamic RTL is used by default with bcc compiler.
- DB2: Fixed bug with Unicode DB2 data type(vargraphic)
interpretation.
- General: Fixed Borland C++ SQLServer OLEDB
compilation problem (sa_max() using instead of max()).
- SQLite: Fixed bug at the text data conversion with
Unicode configuration (thanks Holger Fischer).
- SQLite: Added new SAConection option
"SQLiteDateTypes" (thanks Jonathan Gonzalez Encarnacion).
- SQLite: Fixed bug with SAConnection::setAutoCommit
functionality (thanks Jonathan Gonzalez Encarnacion).
- Oracle: Fixed temporary LOBs memory leak (thansk Marc
Oliver R. Castaneda).
- Sybase: Fixed 64-bit related INT type size bug
(thanks Jon Linkins).
- SQLite: Added declared type processing if there are
no any rows at the result set (thanks Jonathan Gonzalez Encarnacion).
- SQLServer: Fixed bug with "Execute_riid" option is
set to "IID_IStream" (thanks Patrik Luscan).
- MySQL: Fixed datetime and boolean type processing if
statement API is used (thanks Christophe Benoit).
- MySQL: Fixed bug with non-SELECt queries if statement
API is used (thanks Christophe Benoit).
- General: Fixed bug with SANumeric from string
operator (thanks Christophe Benoit).
- Firebird: Fixed 64-bit version (thanks evenreal.com).
- Oracle: Fixed CLOB output parameter reading with
ReadLob2 (thanks Gebert, Alfred).
- Oracle: Fixed field and output parameter buffer size
for multi-byte client character sets (thanks Gebert, Alfred).
|
| 27 May 2009 |
|
Version 3.7.28 of SQLAPI++ library released.
New features:
- SQLServer: Added SAConnection OLEDB options
"CompactEdition.3.0" and "CompactEdition.3.5" (thanks Johannes Maly).
- SQLServer: Fixed processing of 'real' and 'tinyint'
field types for SQLCE (thanks Jacob Pedersen).
- General: Linux/Unix, added SQLAPI_SOLARIS compilation
option and fixed pthread compilation problem (thanks Bogdan Pytlik).
- SQLServer: OLEDB, fixed bug with empty second result
set at the same scrollable SACommand (thanks Bjoern Eggstein).
- General: Linux/Unix, added SQLAPI_SCOOSR5 compilation
option (implemented for SCO OpenServer 5.0.7 by Andrew Thornton).
- General: Linux/Unix, removed stabs+ debug information
format specification (thanks Andrew Thornton).
- MySQL: Fixed bug when it was impossible to process
several result sets those a procedure returns (thanks Klass, Markus).
- Oracle: Added a code that uses new OCILogRead2 when
available (thanks Jeff Huttel).
- MySQL: Fixed problem with prepared statements and
different MYSQL_BIND versions (thanks Alexander Petrossian).
- General: Several performance improvements (thanks
Mike Moening).
- MySQL: Fixed bug with SA_UNICODE_WITH_UTF8 and text
fields when statement API used (thanks Jason at goffconcepts.com).
- DB2: Fixed bug with text fields (UNICODE version).
- General: For 'SACommand::Field(const SAString
&sField)' added the second cycle for the field searching by short
name (thanks Felix Nawothnig).
- Sybase: Fixed long text field reading (SA_UNICODE).
- Sybase: Added ability to define procedure parameters
when the procedure name includes its number (ASE, like 'procedure1;1',
thanks Vlad Imshenetskiy).
- Sybase: Added method to detect server type (ASA or
ASE) to avoid any extra internal exception processing (thanks Vlad
Imshenetskiy).
- SQLServer: Added 2008 OLEDB client support.
- SQLServer: Added 2008 new data type support (thanks
Justin Matthews).
- SQLServer: Added fixes those allows to use
"ICommandPrepare" = "skip" with procedures (without preparing there was
string data truncation, thanks Justin Matthews).
- MySQL: Added using 'KILL QUERY' command instead of
mysql_kill with MySQL version >= 5.0 (thanks Andrew Thornton).
- General: Documentation improved (thanks Justin
Matthews and Kaarel Odraks).
- Oracle: Fixed double values binding - using
SQLT_BDOUBLE rather then SQLT_FLT (thanks Alan Hardin).
|
| 22 January 2009 |
|
Version 3.7.27 of SQLAPI++ library released.
New features:
- General: Now 'SANumeric::operator double() const'
again uses strtod() variant but with '.' replaced by
localeconv()->decimal_point (thanks Alasdair Richardson).
- General: 'SAGlobals::UnloadAPI() = true' behavior
fixed (thanks Christophe Benoit).
- MySQL: Fixed bug at ImyCursor::MySQLEscapeString(),
if If a string is passed in that only contains escapable chars (thanks
Oliver Watson).
- SQLServer: Fixed bug with scrollable statement
reusing that results in wrong result set processing (thanks Alexander
Horak).
|
| 3 December 2008 |
|
Version 3.7.26 of SQLAPI++ library released.
New features:
- ODBC: Now SA_dtNumeric SQLAPI++ type is used by
default for SQL_NUMERIC, SQL_DECIMAL and SQL_BIGINT (before SA_dtDouble
was there)..
- ODBC: Added new option SAConnection option
ODBCUseNumeric.
- PostgreSQL: Added support for SA_UNICODE_WITH_UTF8
build option (experimental).
- Sybase: sybAPI::DefaultLongMaxLength method added to
control max 'long' field size (when the using of ct_get_data is
impossible).
- Sybase: SAGlobals::SetSybaseMessageCallback method
renamed/moved to sybAPI::SetMessageCallback (still EXPERIMENTAL).
- InterBase: Added ability to use new Firebird
fb_interpret call instead of unsafe isc_interprete (thanks Diane
Downie).
- General: SQLAPI++ parameters and fields buffers
allocation optimized (thanks Jeff Huttel).
- Sybase: CS_LOCALE connection option added.
- SQLServer: Fixed bug with numeric parameter presicion
(truncation, thanks Jean-Claude Chauve).
- PostgreSQL: Fixed bug with SAParam::setAsULong
(thanks Vlad Romascanu).
- Sybase: Added 'date' type support for the stored
procedure parameters (thanks Vlad Imshenetskiy).
- Sybase: Fixed problem with the procedure parameters
describing when procedure is located in another database (Georgiy
Pakhutin).
- ODBC: Added new connection options -
SQL_DRIVER_PROMPT,SQL_DRIVER_COMPLETE,SQL_DRIVER_COMPLETE_REQUIRED,DSN.
- SQLServer: Fixed bug with procedure preparation.
|
| 12 September 2008 |
|
Version 3.7.25 of SQLAPI++ library released.
New features:
- General: saConnectionHandler_t callback added at
SAConnection::Connect method.
- SQLServer: SQLCE, "CreateDatabase" option added.
- SQLServer: SQLCE, use SA_dtString program type for
uniqueidentifier fields.
- Oracle: Fixed memory leak when SYS_REFCURSOR
parameters returns a cursor field (thanks mera.ru)
- General: Added compilation option
SA_UNICODE_WITH_UTF8. Used with MySQL to turn on utf-8 client character
set for SA_UNICODE configuration.
- General: SA_UNICODE configuration. Added SAString
methods GetUTF8Chars, GetUTF8CharsLength, SetUTF8Chars.
- Oracle: Fixed option processing
OCI_ATTR_CHARSET_FORM=SQLCS_NCHAR for NCLOB binding (thanks Andreas
Wenzel).
- Oracle: Fixed binding(SA_UNICODE) CLOB procedure
parameters (thanks Marcel Rassinger).
- General: Fixed 'SANumeric::operator double() const'
bug with locale settings those use a special character as a decimal
delimiter instead of '.'.
- SQLite: Added new API functions - sqlite3_threadsafe
and sqlite3_last_insert_rowid.
- SQLite: Fixed wrong API initialization (thanks Peter
Klotz).
- SQLite: Added "BusyTimeout" connection option.
- General: Added version info into sqlapi.dll (thanks
Frank Hilliger).
- Sybase: SACommand::Cancel should work now (thanks
Georgiy Pakhutin).
- SQLServer: OLEDB, SACommand::Cancel works with
multiple results (required SQLNCLI, thanks Georgiy Pakhutin).
- SQLServer: OLEDB, the default value of
"ICommadPrepare" option was changed to "skip".
- Sybase: "SybaseResultType" and "SybaseResultCount"
SACommand options added.
- Sybase: SAGlobals::SetSybaseMessageCallback method
added (EXPERIMENTAL, allows to process Sybase messages manually).
- DB2: Added mapping
DECFLOAT<->SA_dtString(thanks Dmitry Chaikovsky).
|
| 26 February 2008 |
|
Version 3.7.24 of SQLAPI++ library released.
New features:
- MySQL: Connection options MYSQL_OPT_READ_TIMEOUT,
MYSQL_OPT_WRITE_TIMEOUT and MYSQL_OPT_CONNECT_TIMEOUT added.
- MySQL: Version 5.1 supported now.
- Oracle: CLOB/BLOB truncation bug fixed.
- Oracle: REFCURSOR memory leak problem fixed.
- SQLite: Initial support for SQLite added.
- ODBC: Added the special code for situations when the
ODBC driver returns 0 bytes instead of SQL_NO_DATA (LongChar reading,
thanks Frank Hilliger).
- SQLServer: SQLOLEDB layer modified for Compact
Edition 3.5.
- SQLServer: Added Compact Edition specific options.
Now CE layer is available at UNICODE version only.
- DB2: Fixed the problem with column names (UNICODE
version, thanks Adrian Studer).
- General: Fixed the problem with the SANumeric
rounding (thanks Mike Moening).
- MySQL: Added SAInterval parameter processing (thanks
Frank Hilliger).
|
See Full History...
Last modified: 2 July 2010
webmaster@sqlapi.com
|