dart_odbc

A Dart package for interacting with ODBC databases. It allows you to connect to ODBC data sources and execute SQL queries directly from your Dart applications.

This package is inspired by the obsolete odbc package by Juan Mellado.

style: very good analysis

Usage

  • Instanciate the ODBC class by providing the path to the odbc driver on the host machine
  final odbc = DartOdbc(
    '/path/to/the/odbc/driver',
    version=SQL_OV_ODBC3_80 // optional
  );

Path to ODBC Driver

Path to the ODBC driver can be found in the ODBC driver manager. In windows this is a .dll file that is there in the installation folder of the ODBC driver. In linux this has an extension of .so. In macos this should have an extension of .dylib.

version

The ODBC version can be specified using the version parameter. Definitions for these values can be found in the LibODBC class. Please note that some drivers may not work properly with manually setting version.

  • Connect to the database by providing the DSN (Data Source Name) configured in the ODBC Driver Manager
  odbc.connect(
    dsn: '<your_dsn>',
    username: 'db_username',
    password: 'db_password',
  );

DSN (Data Source Name)

This is the name you gave when setting up the driver manager. For more information, visit this page from the MySQL Documentation

  • In case the path privided to the driver is invalid or there is any issue with setting up the environment/connecting to the database, an Exception will be thrown when intanciating the ODBC or connecting to the database.
  • Execute your queries directly as follows
  final result = odbc.execute("SELECT 10");

Executing prepared statements

  • Prepared statements can be used to prevent SQL Injection
  • Example query
  final List<Map<String, dynamic>> result = odbc.execute(
    'SELECT * FROM USERS WHERE UID = ?',
    params: [1],
  );
  • Result will be a List of Map objects where each Map represents a row. If anything goes wrong an ODBCException will be thrown

Unsupported whitespace unicode characters

  • On some platforms with some drivers sometimes unsupprted unicode characters can be included.
  • These characters can be pruned from the result set using the removeWhitespaceUnicodes method from the DartOdbc class.
  print(DartOdbc.removeWhitespaceUnicodes(result));

Accessing ODBC diver bindings directly

Tested On

This package has been tested to be working on the following Database Servers

  • Microsoft SQL Sever
  • Oracle

Support for other Database Servers

  • Although not tested, this plugin should work on any database that provides an ODBC Driver.
  • For a comprehensive list of supported database servers checkout Drivers section of the official unixodbc site

Libraries

dart_odbc
Dart ODBC