{"id":18365264,"url":"https://github.com/openlink/iodbc","last_synced_at":"2025-10-07T16:28:43.789Z","repository":{"id":2839868,"uuid":"3843249","full_name":"openlink/iODBC","owner":"openlink","description":"An open-source ODBC driver manager and SDK that facilitates the development of database-independent applications on linux, freebsd, unix and MacOS X platforms.","archived":false,"fork":false,"pushed_at":"2024-12-31T11:37:31.000Z","size":5588,"stargazers_count":169,"open_issues_count":30,"forks_count":55,"subscribers_count":26,"default_branch":"develop","last_synced_at":"2025-04-09T16:19:32.095Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.iodbc.org/ ","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openlink.png","metadata":{"files":{"readme":"README","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-03-27T12:00:37.000Z","updated_at":"2025-03-22T18:59:07.000Z","dependencies_parsed_at":"2024-07-31T22:08:23.655Z","dependency_job_id":null,"html_url":"https://github.com/openlink/iODBC","commit_stats":{"total_commits":945,"total_committers":16,"mean_commits":59.0625,"dds":0.2571428571428571,"last_synced_commit":"e2375b64ad778af1d33694a0ec537a048006d8a0"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlink%2FiODBC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlink%2FiODBC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlink%2FiODBC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openlink%2FiODBC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openlink","download_url":"https://codeload.github.com/openlink/iODBC/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248065281,"owners_count":21041872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T23:13:01.154Z","updated_at":"2025-10-07T16:28:43.719Z","avatar_url":"https://github.com/openlink.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# iODBC Driver Manager\n\nCopyright (C) 1995 Ke Jin \u003ckejin@empress.com\u003e. \nCopyright (C) 1996-2025 OpenLink Software \u003ciodbc@openlinksw.com\u003e.\n\n## License\n\nCopyright 1996-2025 [OpenLink Software](http://www.openlinksw.com)\n\nThis software is released under either the GNU Library General Public\nLicense (see [LICENSE.LGPL](./LICENSE.LGPL)) or the BSD License (see\n[LICENSE.BSD](./LICENSE.BSD)).\n\n**Note**: The only valid version of the GPL license as far as this\nproject is concerned is the original GNU General Public License Version\n2, dated June 1991.\n\n### Contributions\n\nWhile not mandated by the BSD license, any patches you make to the iODBC\nproject may be contributed back into the project at your discretion.\nContributions will benefit the Open Source and Data Access community as\na whole. Submissions may be made via the [iODBC Github\nproject](https://github.com/openlink/iODBC/) or via email to\n\u003ciodbc@openlinksw.com\u003e.\n\n## Introduction\n\nWelcome to the iODBC driver manager maintained by [OpenLink\nSoftware](http://www.openlinksw.com/).\n\nThis kit will provide you with everything you need to develop\nODBC-compliant applications under Unix without having to pay royalties\nto other parties.\n\nThis kit consists of a number of parts:\n\n-   **The iODBC driver manager.** This is a complete implementation of\n    an ODBC driver manager, released under either the GNU Library\n    General Public License or the BSD License. We fully comply with\n    these licenses by giving you this product in source form (as well as\n    the binary form). You can download the latest version of the driver\n    manager from the [iODBC website](http://www.iodbc.org/).\n\n-   **A simple example application, `iodbctest.c`**, which gives you a\n    command-line interface to SQL. You can fit this to your purposes,\n    but at the very least this is useful for verification of your ODBC\n    installation.\n\nYou can use either part stand-alone, if you wish.\n\nAn ODBC driver is still needed to affect your connection architecture.\nYou may build a driver with the iODBC components or obtain an ODBC\ndriver from a commercial vendor. OpenLink Software produces\ncross-platform commercial drivers as well as maintaining the iODBC\ndistribution: evaluation copies may be obtained via download from the\n[OpenLink Software website](http://www.openlinksw.com/). Any\nODBC-compliant driver will work with the iODBC Driver Manager.\n\nYou can see the [iODBC website](http://www.iodbc.org/) for pointers to\nvarious ODBC drivers.\n\n## Installation of run-time distribution\n\nYou have probably already unpacked this distribution. The next step is\nto make sure that your applications can find all the dynamic link\nlibraries. Depending on your system's implementation of dynamic link\nlibraries, you have a number of options:\n\n-   Install the libraries in a directory that is searched by your linker\n    by default. Typical locations are `/usr/lib` and `/usr/local/lib`.\n\n-   Install the libraries in some other place, and make sure that the\n    environment variable your dynamic linker uses to find extra\n    locations for dynamic link libraries. Most systems use the\n    environment variable `LD_LIBRARY_PATH` to this end. Known exceptions\n    include AIX which uses `LIBPATH`, and HP/UX which uses `SHLIB_PATH`\n    for 32-bit libraries.\n\nIf your system has a C compiler, you can verify the installation by\ncompiling the `iodbctest` program. Otherwise, you may have ODBC\napplications installed on your system which you can use.\n\n## Configuration of run-time distribution\n\nThe iODBC driver manager looks for a file `~/.odbc.ini`, where the tilde\nstands for the user's home directory. This file initially contains only\na default section where you can select which driver library to use. Copy\nthe `odbc.ini` file from the examples directory to `~/.odbc.ini` and\nmake sure the right path and filename is used for your installation.\n\nA data source is a section (enclosed in square brackets), and the\nattributes for a data source are given within this section. The most\nimportant attribute to iODBC for each datasource is the `Driver`\nattribute. This must point to the shared library for the ODBC driver\nassociated with the data source.\n\nFor example, the OpenLink Enterprise Edition (Multi-Tier) ODBC drivers\nhave a number of attributes which can be set for a data source. Here is\na description:\n\n  -----------------------------------------------------------------------------------\n  `odbc.ini` keyword         ODBC connect string keyword            Description\n  -------------------------- -------------------------------------- -----------------\n  `Host`                     `HOST`                                 The hostname\n                                                                    where the\n                                                                    database resides.\n\n  `ServerType`               `SVT`                                  The type of\n                                                                    Database Agent.\n                                                                    (See `oplrqb.ini`\n                                                                    on the server.)\n\n  `ServerOptions`            `SVO`                                  Server-specific\n                                                                    extra options.\n                                                                    See Enterprise\n                                                                    Edition\n                                                                    server-side\n                                                                    documentation for\n                                                                    Agents which can\n                                                                    use this.\n\n  `Database`                 `DATABASE`                             The database to\n                                                                    use.\n\n  `Options`                  `OPTIONS`                              Connect options\n                                                                    for the database.\n\n  `UserName`                 `UID`                                  The name of the\n                                                                    database user.\n\n  `Password`                 `PWD`                                  The password of\n                                                                    the database\n                                                                    user.\n\n  `ReadOnly`                 `READONLY`                             A `Yes`/`No`\n                                                                    value in order to\n                                                                    make the\n                                                                    connection\n                                                                    read-only.\n\n  `FetchBufferSize`          `FBS`                                  The number of\n                                                                    records that are\n                                                                    transferred in a\n                                                                    single call to\n                                                                    the server.\n                                                                    Default is `5`;\n                                                                    maximum is `999`;\n                                                                    minimum is `1`.\n\n  `Protocol`                 `PROTO`                                The protocol to\n                                                                    use. Set to `TCP`\n                                                                    for Release 3.x\n                                                                    and later.\n  -----------------------------------------------------------------------------------\n\nApart from these data source-specific settings, you may add a section\ncalled `[Communications]`, which you may use to tune the OpenLink\nEnterprise Edition (Multi-Tier) driver further:\n\n  -----------------------------------------------------------------------\n  `odbc.ini` keyword                          Description\n  ------------------------------------------- ---------------------------\n  `ReceiveTimeout`                            The time in seconds that\n                                              the client application will\n                                              wait for the Database Agent\n                                              to start sending results.\n                                              Default is `60`.\n\n  `BrokerTimeout`                             The time in seconds that\n                                              the client application will\n                                              wait for the Request Broker\n                                              to accept or reject a\n                                              database connection\n                                              request. Default is `30`.\n\n  `SendSize`                                  RPC send buffer size. A\n                                              value of `0` (the default)\n                                              will cause the application\n                                              to use system-dependent\n                                              defaults.\n\n  `ReceiveSize`                               RPC receive buffer size. A\n                                              value of `0` (the default)\n                                              will cause the application\n                                              to use system-dependent\n                                              defaults.\n\n  `DebugFile`                                 If set, the name of a file\n                                              to which debugging output\n                                              from the driver should be\n                                              directed.\n  -----------------------------------------------------------------------\n\n## iODBC driver manager platform availability\n\nThe iODBC driver manager has been ported to following platforms:\n\n  OS                 Version        Processor\n  ------------------ -------------- ------------------------------------------------\n  BSDi BSD/OS        2.x            x86\n  DEC Unix (OSF/1)   3.x - 5.x      DEC Alpha\n  DG/UX              5.x            Aviion\n  FreeBSD            2.x - 9.x      x86\n  HP/UX              9.x - 11.x     HP9000 s700/s800\n  HP/UX              9.x            HP9000 s300/s400\n  IBM AIX            3.x - 5.x      IBM RS6000, ppc32, ppc64\n  Linux ELF          1.x, 2.x       x86, x86_64, IA_64, ppc32, ppc64, arm32, arm64\n  macOS              10.x -- 11.x   ppc32, ppc64, x86, x86_64, arm64\n  Max/OS SVR4        1.x            Concurrent Maxion 9200 MP\n  NCR SVR4           3.x            NCR 3435\n  OpenVMS            6.x            DEC Alpha\n  SCO OpenServer     5.x            x86\n  SGI Irix SVR4      5.x, 6.x       IP12 MIPS, IP22 MIPS\n  SunOS              4.1.x          Sun Sparc\n  Sun Solaris        2.x            Sun Sparc, x86, x86_64\n  UnixWare SVR4.2    1.x, 2.x       x86\n  Windows NT         4.x            x86\n\nAs the iODBC driver manager uses `autoconf`/`automake`/`libtool`, it\nshould be portable to most modern UNIX-like OS out of the box. However,\nif you do need to make changes to the code or the configuration files,\nwe would appreciate it if you would share your changes with the rest of\nthe internet community by mailing your patches to\n\u003ciodbc@openlinksw.com\u003e, so we can include them for the next build.\n\nPorting the iODBC driver manager to some non-UNIX-like operating\nsystems, such as the Windows family (3.x, 95, NT, 200x, etc.), IBM OS/2,\nor Mac Classic, is supported, but has not been compiled or tested\nrecently. Of course, you will need to supply a `make`/`build` file and a\nshort `LibMain` for creating the `iodbc.dll`.\n\n## How to build the iODBC driver manager\n\nUsers of macOS should read the separate\n[README_MACOSX](./README_MACOSX.md) document for more detail of porting\nto this platform.\n\nUsers of all other UNIX-like OS:\n\n1.  Run `configure` to adjust to target platform\n2.  Run `make`\n3.  Run `make install`\n\nThe `configure` program will examine your system for various compiler\nflags, system options, etc. In some cases, extra flags need to be added\nfor the `C` compiler to work properly; for instance, on HP systems, you\nmay need:\n\n    $ CFLAGS=\"-Ae -O\" ./configure --prefix=/usr/local ..........\n\n### File Hierarchy\n\nNote that the path of the system wide `odbc.ini` file is calculated as\nfollows (based on flags to `./configure`):\n\n    no --prefix                     default is /etc/odbc.ini\n    --prefix=/usr                   /etc/odbc.ini\n    --prefix=/xxx/yyy               /xxx/yyy/etc/odbc.ini\n    --sysconfdir=/xxx/yyy           /xxx/yyy/odbc.ini\n    --with-iodbc-inidir=/xxx/yyy    /xxx/yyy/odbc.ini\n\nIf the **`--with-layout=`** option is set, then the `prefix` and\n`sysconfdir` parameters will be changed accordingly. Currently, this\nparameter understands values of **`gentoo`**, **`redhat`**, **`gnu`**,\n**`debian`**, or **`opt`** (with everything going into `/opt/iodbc/`).\nIf both are specified, `--prefix` argument will overrule\n`--with-layout`.\n\n### Example\n\n    $ ./configure --prefix=/usr/local --with-iodbc-inidir=/etc\n        ...\n        ...\n        ...\n    $ make\n        ...\n        ...\n        ...\n    $ su\n    # make install\n        ...\n        ...\n        ...\n\n## `odbc.ini`\n\nDriver manager and drivers use the `odbc.ini` file or connection string\nwhen establishing a data source connection. On Windows, `odbc.ini` is\nlocated in the Windows directory.\n\nOn UNIX-like OS, the iODBC driver manager looks for the `odbc.ini` file\nin the following sequence:\n\n1.  check environment variable `ODBCINI`\n\n2.  check `$HOME/.odbc.ini`\n\n3.  check home in `/etc/passwd` and try `.odbc.ini` in there\n\n4.  system-wide `odbc.ini` (settable at configuration time)\n\nItem 1 is the easiest, as most drivers will also look at this variable.\n\nThe format of `odbc.ini` (or `~/.odbc.ini`) is defined as:\n\n    odbc.ini            ::= data_source_list\n\n    data_source_list    ::= /* empty */\n                         | data_source '\\n' data_source_list\n\n    data_source         ::= '[' data_source_name ']' '\\n' data_source_desc\n\n    data_source_name    ::= 'default' | [A-Za-z]*[A-Za-z0-9_]*\n\n    data_source_desc    ::= /* empty */\n                         | attrib_desc '\\n' data_source_desc\n\n    addrib_desc         ::= Attrib '=' attrib_value\n\n    Attrib              ::= 'Driver' | 'PID' | 'UID' | driver_def_attrib\n\n    driver_def_attrib   ::= [A-Za-z]*[A-Za-z0-9_]*\n\nAn example of an `odbc.ini` file:\n\n    ;\n    ;  odbc.ini\n    ;\n    [ODBC Data Sources]\n    Myodbc          = Myodbc\n    Sample          = OpenLink Generic ODBC Driver\n    Virtuoso        = Virtuoso\n\n    [ODBC]\n    TraceFile       = /tmp/odbc.trace\n    Trace           = 0        ; set to 1 to enable tracing\n\n    [Sample]\n    Driver          = /usr/local/openlink/lib/oplodbc.so.1\n    Description     = Sample OpenLink DSN\n    Host            = localhost\n    UserName        = openlink\n    Password        = xxxx\n    ServerType      = Oracle 8.1.x\n    Database        =\n    FetchBufferSize = 99\n    ReadOnly        = no\n\n    [Virtuoso]\n    Driver          = /usr/local/virtuoso/lib/virtodbc.so.1\n    Address         = localhost:1112\n    Database        = Demo\n\n    [Myodbc]\n    Driver          = /usr/lib/libmyodbc.so\n    HOST            = localhost\n\n    [Default]\n    Driver          = /usr/local/openlink/lib/oplodbc.so.1\n\n## Tracing\n\nThe iODBC driver manager traces driver's ODBC call invoked by the driver\nmanager. Default tracing file is `./odbc.log`. Tracing option (i.e.,\non/off or optional tracing file name) can be set in `odbc.ini` file\nunder the `[ODBC]` heading, as:\n\n    [ODBC]\n    TraceFile = \u003coptional_trace_file\u003e\n    Trace = ON | On | on | 1 | OFF | Off | off | 0\n\nIf `\u003coptional_trace_file\u003e` is `stderr` or `stdout`, i.e. --\n\n    TraceFile = stderr\n\n-- or --\n\n    TraceFile = stdout\n\n-- the tracing message will go to the terminal screen (if available).\n\n## Further Information Sources\n\n-   [iODBC Website](http://www.iodbc.org/) containing binaries, sources\n    and documentation.\n\n-   [iODBC Project page on GitHub](https://github.com/openlink/iODBC/)\n    containing source archives, GIT tree, issues forum.\n\n-   [iODBC Project page on\n    Sourceforge](http://sourceforge.net/projects/iodbc) containing\n    source archives, GIT tree, mailing lists, forums, bug reports.\n\n-   [OpenLink Software Website](http://www.openlinksw.com/) containing\n    free trials and support for OpenLink's ODBC drivers.\n\n-   [Microsoft ODBC\n    Documentation](https://msdn.microsoft.com/en-us/library/ms714177)\n    containing the ODBC API Reference Guide.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenlink%2Fiodbc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenlink%2Fiodbc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenlink%2Fiodbc/lists"}