root / README
View | Annotate | Download (6.3 KB)
| 1 | $Id: README,v 1.19 2004/10/07 03:35:27 wwg Exp $ |
|---|---|
| 2 | |
| 3 | |
| 4 | =========================================================================== |
| 5 | = APQ Version 3.0 = |
| 6 | =========================================================================== |
| 7 | = The APQ Ada95 Database Library = |
| 8 | = = |
| 9 | = This package has the commmon part for all the APQ drivers available. = |
| 10 | = In order to connect to a database, you'll have to download and install = |
| 11 | = one of the database bindings being: = |
| 12 | = * MySQL :: apq-mysql package = |
| 13 | = * PostgreSQL :: apq-postgresql package = |
| 14 | = * Ms. SQL Server/Sybase :: apq-ct_lib package = |
| 15 | = * Sybase (more specialized) :: apq-sybase = |
| 16 | = = |
| 17 | = Authors: = |
| 18 | = Warren W. Gay VE3WWG <ve3wwg@cogeco.ca> = |
| 19 | = http://home.cogeco.ca/~ve3wwg = |
| 20 | = Marcelo C. de Freitas <marcelo@kow.com.br> = |
| 21 | =========================================================================== |
| 22 | |
| 23 | |
| 24 | Why use APQ over other products? |
| 25 | |
| 26 | |
| 27 | APQ Features: |
| 28 | ------------- |
| 29 | |
| 30 | - It is a thick binding, making it natural for Ada programmers. |
| 31 | - It is very simple to use, making programming easy. |
| 32 | - Can be used with strong Ada types. |
| 33 | - Generic procedure and function support for strong types. |
| 34 | - Supports multiple database engines generically |
| 35 | - MySQL supported as of APQ-2.0 |
| 36 | - Sybase supported as of APQ-2.2 |
| 37 | - Database neutral code is possible (portable) |
| 38 | |
| 39 | - Full BLOB support (for PostgreSQL) |
| 40 | - Blob I/O is performed through Ada95 stream I/O. |
| 41 | - High performance blob I/O through buffered stream I/O |
| 42 | - Optionally blob I/O can be unbuffered. |
| 43 | |
| 44 | - Native binding (no ODBC muss or fuss!) |
| 45 | - Full support for NULL values. |
| 46 | - Additional support for DATE, TIME and TIMESTAMP data types. |
| 47 | - Some support for TIMEZONE types (PostgreSQL) |
| 48 | - Supports bit string types (PostgreSQL) |
| 49 | - Leaves the SQL in human readable form |
| 50 | |
| 51 | - 4 levels of tracing for application debugging |
| 52 | - Trace_None (no tracing) |
| 53 | - Trace_DB (C library trace information only) |
| 54 | - Trace_APQ (SQL query trace information only) |
| 55 | - Trace_Full (both Trace_DB and Trace_APQ) |
| 56 | - Trace_APQ output can be fed as SQL text for testing |
| 57 | |
| 58 | - Non restritive license : |
| 59 | - MGPL (GNAT Modified GNU Public License) |
| 60 | |
| 61 | - Extensive manual, with examples for nearly every function. |
| 62 | - notice while the manual hasn't been update for a while, it's |
| 63 | still a great source of information. |
| 64 | - Manual includes a chapter on generic database programming. |
| 65 | |
| 66 | - Experimental support of the Decimal_Type package (using |
| 67 | decimal routines used internally by the PostgreSQL database |
| 68 | engine). |
| 69 | - Under active development and use |
| 70 | |
| 71 | Design Goals: |
| 72 | ------------- |
| 73 | |
| 74 | The main design goals for the APQ binding development were: |
| 75 | |
| 76 | - simple to use |
| 77 | - easy to read |
| 78 | - reliable |
| 79 | - database vendor neutral (generic database programming) |
| 80 | - at the user's option, strongly typed |
| 81 | - strong blob support |
| 82 | - No C language interfaces or types |
| 83 | - good documentation |
| 84 | |
| 85 | It is the authors' belief that these goals have been suitably met, |
| 86 | although the package is still undergoing active research. Excluding blob |
| 87 | support, there are only 2 tagged object types that the programmer must |
| 88 | become familiar with. These objects include Finalization and nicely |
| 89 | clean up after themselves. Blob support adds one more tagged object that |
| 90 | the programmer can interact with. |
| 91 | |
| 92 | 1. The Connection_Type object for database connections |
| 93 | 2. The Query_Type object for SQL interactions with server |
| 94 | 3. The Blob_Type type for Blob I/O and operations |
| 95 | |
| 96 | Having few objects reduces the learning curve substantially. A large |
| 97 | number of functions and procedures are overloaded -- reusing the same |
| 98 | name. This also reduces the learning curve, since the remaining |
| 99 | differences are only in the involved data types. Much complexity |
| 100 | is hidden within the state driven objects. |
| 101 | |
| 102 | The APQ binding allows the Ada95 programmer to interface with blobs |
| 103 | using stream I/O. This preserves the Ada advantage for strong type |
| 104 | checking while making it simple for the programmer to perform I/O. As of |
| 105 | APQ 1.2, the blob I/O is buffered, giving the stream I/O for blobs a |
| 106 | major performance boost. No longer will the programmer need to search |
| 107 | for performance work-arounds for blob operations. |
| 108 | |
| 109 | Version 2.2 of APQ brings Sybase into the fold of supported |
| 110 | databases. This is particularly useful now that Sybase has |
| 111 | generously made their ASE-12.5x Express edition of their |
| 112 | server available to developers for free. |
| 113 | |
| 114 | Version 3.0 provides full compatibility with the FreeTDS library, |
| 115 | thus providing Microsoft SQL Server support in adition to the |
| 116 | already existing Sybase support. |
| 117 | |
| 118 | Trial Programs: |
| 119 | --------------- |
| 120 | |
| 121 | In the 3.0 the old trial programs has been removed from the distribution. |
| 122 | |
| 123 | However, there are some examples in the "samples" folder for testing |
| 124 | some of the features (but not all of them). |
| 125 | |
| 126 | If you'd like to help, providing such tests would be agreat place to |
| 127 | start. |
| 128 | |
| 129 | |
| 130 | Platforms: |
| 131 | ---------- |
| 132 | |
| 133 | These are the platforms where we've been sucessful in compilling and using APQ so far: |
| 134 | |
| 135 | OS: |
| 136 | Linux Kernel 2.6 |
| 137 | Windows 2k, 2k3, XP and Vista |
| 138 | Compiler: |
| 139 | GNAT 3.14p |
| 140 | GNAT GCC 4.2 and 4.3 |
| 141 | |
| 142 | Database Servers: |
| 143 | PostgreSQL 7.3.5 |
| 144 | MySQL 4.0.14 and 5.0.76 |
| 145 | Sybase ASE 12.52 |
| 146 | Microsoft SQL Server 2005 |
| 147 | |
| 148 | While not yet tested on all platforms, this package will likely |
| 149 | port well for must UNIX platforms, including: |
| 150 | |
| 151 | - FreeBSD (untested) |
| 152 | - NetBSD (untested) |
| 153 | - OpenBSD (untested) |
| 154 | - HP-UX 10.2 or higher (untested) |
| 155 | - Sun Solaris (untested) |
| 156 | |
| 157 | |
| 158 | Win32 Builds: |
| 159 | ------------- |
| 160 | |
| 161 | Win32 builds are now possible. See the pdf document |
| 162 | named win32.pdf for instructions on how to build APQ |
| 163 | from sources. |
| 164 | |
| 165 | |
| 166 | Feedback: |
| 167 | --------- |
| 168 | |
| 169 | Please feedback suggestion and bugs to the project homepage: |
| 170 | http://framework.kow.com.br |
| 171 | |
| 172 | When reporing bugs please provide also: |
| 173 | . Database server with version |
| 174 | . OS with version |
| 175 | . Ada compiler with version |
| 176 | |
| 177 | |
| 178 | Thank-you for downloading and using APQ. |
| 179 | |
| 180 | |
| 181 | See file HISTORY for revision history |
| 182 | |
| 183 | - End - |