Database Independent Abstraction Layer for C

libdbi Programmer's Guide

David A. Parker

Neon Goat Productions

Markus Hoenicka

libdbi implements a database-independent abstraction layer in C, similar to the DBI/DBD layer in Perl. Writing one generic set of code, programmers can leverage the power of multiple databases and multiple simultaneous database connections by using this framework.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in Appendix A.


Table of Contents
1. Introduction
1.1. Description
1.2. libdbi Concepts and Terminology
1.3. Modifications and redistribution of libdbi
1.4. Contact Info
2. libdbi in a Nutshell (Quickstart Guide)
2.1. Quick Overview
2.2. Generic Example Program
2.3. Loading libdbi at runtime
2.4. Adding libdbi to your project
3. Error Handling
3.1. Connection error numbers and messages
3.2. Error numbers
4. libdbi API Reference
4.1. Core Library Functions
4.1.1. dbi_initialize
4.1.2. dbi_shutdown
4.1.3. dbi_version
4.2. Driver Infrastructure
4.2.1. dbi_driver_list
4.2.2. dbi_driver_open
4.2.3. dbi_driver_is_reserved_word
4.2.4. dbi_driver_specific_function
4.2.5. dbi_driver_quote_string
4.2.6. dbi_driver_quote_string_copy
4.2.7. dbi_driver_encoding_from_iana
4.2.8. dbi_driver_encoding_to_iana
4.2.9. Driver Information
4.2.9.1. dbi_driver_get_name
4.2.9.2. dbi_driver_get_filename
4.2.9.3. dbi_driver_get_description
4.2.9.4. dbi_driver_get_maintainer
4.2.9.5. dbi_driver_get_url
4.2.9.6. dbi_driver_get_version
4.2.9.7. dbi_driver_get_date_compiled
4.3. Connection Infrastructure
4.3.1. dbi_conn_new
4.3.2. dbi_conn_open
4.3.3. dbi_conn_close
4.3.4. dbi_conn_get_driver
4.3.5. dbi_conn_set_option
4.3.6. dbi_conn_set_option_numeric
4.3.7. dbi_conn_get_option
4.3.8. dbi_conn_require_option
4.3.9. dbi_conn_get_option_numeric
4.3.10. dbi_conn_require_option_numeric
4.3.11. dbi_conn_get_option_list
4.3.12. dbi_conn_clear_option
4.3.13. dbi_conn_clear_options
4.3.14. dbi_conn_get_socket
4.3.15. dbi_conn_get_encoding
4.3.16. dbi_conn_get_engine_version_string
4.3.17. dbi_conn_get_engine_version
4.3.18. Error Handling
4.3.18.1. dbi_conn_error
4.3.18.2. dbi_conn_error_handler
4.3.18.3. dbi_conn_error_flag
4.3.18.4. dbi_conn_set_error
4.4. SQL and Database Infrastructure
4.4.1. dbi_conn_connect
4.4.2. dbi_conn_get_db_list
4.4.3. dbi_conn_get_table_list
4.4.4. dbi_conn_select_db
4.5. Managing Queries
4.5.1. dbi_conn_query
4.5.2. dbi_conn_queryf
4.5.3. dbi_conn_query_null
4.5.4. dbi_conn_sequence_last
4.5.5. dbi_conn_sequence_next
4.5.6. dbi_conn_ping
4.5.7. dbi_conn_quote_string
4.5.8. dbi_conn_quote_string_copy
4.5.9. dbi_conn_quote_binary_copy
4.5.10. dbi_conn_escape_string
4.5.11. dbi_conn_escape_string_copy
4.5.12. dbi_conn_escape_binary_copy
4.6. Managing Results
4.6.1. dbi_result_get_conn
4.6.2. dbi_result_free
4.6.3. dbi_result_seek_row
4.6.4. dbi_result_first_row
4.6.5. dbi_result_last_row
4.6.6. dbi_result_prev_row
4.6.7. dbi_result_next_row
4.6.8. dbi_result_get_currow
4.6.9. dbi_result_get_numrows
4.6.10. dbi_result_get_numrows_affected
4.7. Retrieving Field Meta-data
4.7.1. dbi_result_get_field_length
4.7.2. dbi_result_get_field_length_idx
4.7.3. dbi_result_get_field_size
4.7.4. dbi_result_get_field_size_idx
4.7.5. dbi_result_get_field_idx
4.7.6. dbi_result_get_field_name
4.7.7. dbi_result_get_numfields
4.7.8. dbi_result_get_field_type
4.7.9. dbi_result_get_field_type_idx
4.7.10. dbi_result_get_field_attrib
4.7.11. dbi_result_get_field_attrib_idx
4.7.12. dbi_result_get_field_attribs
4.7.13. dbi_result_get_field_attribs_idx
4.7.14. dbi_result_field_is_null
4.7.15. dbi_result_field_is_null_idx
4.8. Retrieving Field Data by Name
4.8.1. dbi_result_get_fields
4.8.2. dbi_result_bind_fields
4.8.3. dbi_result_get_char
4.8.4. dbi_result_get_uchar
4.8.5. dbi_result_get_short
4.8.6. dbi_result_get_ushort
4.8.7. dbi_result_get_int
4.8.8. dbi_result_get_uint
4.8.9. dbi_result_get_long
4.8.10. dbi_result_get_ulong
4.8.11. dbi_result_get_longlong
4.8.12. dbi_result_get_ulonglong
4.8.13. dbi_result_get_float
4.8.14. dbi_result_get_double
4.8.15. dbi_result_get_string
4.8.16. dbi_result_get_string_copy
4.8.17. dbi_result_get_binary
4.8.18. dbi_result_get_binary_copy
4.8.19. dbi_result_get_datetime
4.8.20. dbi_result_bind_char
4.8.21. dbi_result_bind_uchar
4.8.22. dbi_result_bind_short
4.8.23. dbi_result_bind_ushort
4.8.24. dbi_result_bind_int
4.8.25. dbi_result_bind_uint
4.8.26. dbi_result_bind_long
4.8.27. dbi_result_bind_ulong
4.8.28. dbi_result_bind_longlong
4.8.29. dbi_result_bind_ulonglong
4.8.30. dbi_result_bind_float
4.8.31. dbi_result_bind_double
4.8.32. dbi_result_bind_string
4.8.33. dbi_result_bind_binary
4.8.34. dbi_result_bind_string_copy
4.8.35. dbi_result_bind_binary_copy
4.8.36. dbi_result_bind_datetime
4.9. Retrieving Field Data by Index
4.9.1. dbi_result_get_char_idx
4.9.2. dbi_result_get_uchar_idx
4.9.3. dbi_result_get_short_idx
4.9.4. dbi_result_get_ushort_idx
4.9.5. dbi_result_get_int_idx
4.9.6. dbi_result_get_uint_idx
4.9.7. dbi_result_get_long_idx
4.9.8. dbi_result_get_ulong_idx
4.9.9. dbi_result_get_longlong_idx
4.9.10. dbi_result_get_ulonglong_idx
4.9.11. dbi_result_get_float_idx
4.9.12. dbi_result_get_double_idx
4.9.13. dbi_result_get_string_idx
4.9.14. dbi_result_get_string_copy_idx
4.9.15. dbi_result_get_binary_idx
4.9.16. dbi_result_get_binary_copy_idx
4.9.17. dbi_result_get_datetime_idx
A. GNU Free Documentation License
List of Tables
2-1. get* and bind* functions sorted by field type
3-1. libdbi error numbers