FreeTDS User Guide: A Guide to Installing, Configuring, and Running FreeTDS
Prev | Chapter 1. What is FreeTDS? | Next

# Current Projects, Language Bindings, and Alternatives

## Current Projects

FreeTDS consists of two projects. The FreeTDS C libraries and FreeTDS/ JDBC.

- The FreeTDS C libraries support three separate APIs: db-lib, ct-lib, and ODBC. Underlying these three is libtds, which handles the low-level details of the TDS protocol, such as sending, receiving, and datatype conversion. This document and the FreeTDS website are dedicated to these libraries.

- If Java is your game, we refer you to the jTDS project on SourceForge. It is a fork of the FreeTDS/JDBC project, by Craig Spannring, and is a free, native 100% Java implementation of a Type 4 JDBC driver.

## Status

The db-lib and ct-lib APIs have been usable for several years. They have been successfully substituted for Sybase's own libraries in a variety of venues, including Perl and PHP. That is not to say that these drivers are complete; they're not. But they faithfully implement an important subset of their APIs, enough to be useful. This 0.64 version boasts support for server-side cursors in ct-lib.

In addition to the core db-lib API, FreeTDS includes a full implementation of db-lib's bcp functions, as well as freebcp, a replacement for Sybase's bcp utility.

The ODBC driver is younger, but has received much attention. The FreeTDS 0.60 ODBC driver was a vast improvement over earlier versions, and 0.61 began to comply with the ODBC 3.0 specification. The current version should be fully ODBC 3.0 compatible and contain many fixes and improvements (ODBC RPC parameters, descriptors and others). Any problems found in the currently implemented API subset are cheerfully addressed.

Basic API coverage information for all libraries may be found in this manual. It is maintained in `doc/api_status.txt`, included in the source distribution.

How big is it? FreeTDS has over 90,000 lines of C code, maintained by a handful of developers. Patches arrive irregularly, varying in size from one-liners to thousand-line monsters. Almost all are applied or used in some way. The mailing list has some 700 or so subscribers at this writing. Safe to say, FreeTDS's success so far lies somewhere between the Beetle and the Edsel.

## Languages besides C and Java

You may be wondering how these libraries fit with Perl, PHP, TCL, Python, or other popular scripting languages. Most of these languages have bindings to Sybase that use either the db-lib or ct-lib API, for which FreeTDS is intended as a drop-in replacement. For instance, Michael Peppler's DBD::Sybase works very well using FreeTDS to access Sybase or Microsoft SQL Servers. PHP has options for `sybase` (db-lib) and `sybase-ct` (ct-lib) APIs.

Not to be outdone, the folks at the O'Caml project have a binding for that language. You can read more about it on Kenn Knowles's site; see also his ocamldbi driver.

## Alternatives

Should FreeTDS not suit your needs, some alternatives

Sybase OpenClient

  In the time since FreeTDS was started, Sybase (as well as most major DBMS vendors) has released its database for the Intel GNU/Linux platform. The good: it is a solid product and supports TDS 4.2 and TDS 5.0. The bad: it doesn't support TDS 7.0 or Linux/*BSD on non-Intel platforms. The ugly: Microsoft broke date handling for big endian Sybase clients.

  Depending on platform, it may cost something.

ODBC bridge products

  They use the ODBC driver on the NT box where your SQL Server runs so you'll never have trouble with new protocols and the like. On the downside, they can be costly and may be inefficient. We know of EasySoft ODBC-ODBC Bridge from EasySoft, Universal Data Access Driver from OpenLink Software, SequeLink from Merant, and ODBC Router from August Software Corporation.

Inline ODBC driver

  Based on libtds, this is a native ODBC driver for i386 *nix. It is free in price, but comes only as a binary at the present time.

DBD::Proxy

  We have no direct experience with this Perl-only option. It has the same caveats as an ODBC bridge except it's free.

Prev | Home | Next
History of FreeTDS | Up | Build FreeTDS