* Firebird and Interbase Data Provider

<ul>
	<li>ADO.NET Data Provider for Firebird and Interbase databases</li>

	<li>Does not exist in Mono, but is a separate project</li>
	
	<li>The <a href="http://firebird.sourceforge.net/index.php">Firebird Relational Database</a> is 
	is an independent project which uses source code based on the Interbase source code released
	by Borland under the Interbase Public License</li>
	
	<li>Both the Firebird Relational Database and the Firebird .NET Data Provider can be
	downloaded from <a href="http://sourceforge.net/projects/firebird/">here</a></li>
	
	<li>The Firebird .NET Data provider has been made
    available by Carlos Guzmn lvarez (aka "Carlos G.A."), who has also made a
    number of contributions to the OdbcJdbc code</li>

	<li>Bugs with Mono or the data provider should be reported 
	in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
	do not have Bugzilla user account, it is free 
	and easy to 
	create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
	
</ul>

** Current Status

<ul>
	<li>Currently, it is able to connect to Firebird and Interbase databases 
	   and execute commands</li>
	   
	<li>The new data
        provider/driver is written in C# and provides a high-performance native
        implementation of the GDS32/API functions. This means that .Net developers
        will be able to access Firebird databases without the need of Firebird
        client install</li>
 
    <li>In support of the new module, a new mailing list
        <a href="http://lists.sourceforge.net/lists/listinfo/firebird-net-provider">firebird-net-provider</a> has 
        been created. Please use this list for any 
        questions that you may have about the provider</li>       
    
	<li>Stuff that works:
		<ul>
			<li>Currently implemented classes: 
					<ul>
					<li>Connection and Connection Pooling</li> 
					<li>Command</li>
					<li>Transaction</li>
					<li>CommandBuilder</li>
					<li>DataAdapter</li>
					<li>DataReader</li>
					<li>Error</li>
					<li>ErrorCollection</li>
					<li>Exception</li>
					<li>Parameter</li>
					<li>ParameterCollection</li>
					<li>Transaction</li>
					</ul>
			</li>		
        </ul>
	</li>
 
</ul>   
   
** Action Plan

<ul>
	<li>Bug fixing</li>
	<li>Improving API reference documentation</li>
	<li>Full testing with Firebird 1.5</li>
	<li>Test with Mono ( http://www.go-mono.com )
		<ul>
			<li>Status  : Started</li>
		</ul>
	</li>
	
	<li>Support for array datatype
		<ul>
		<li>Status  : Started</li>
		<li>Comments: See Interbase API reference documentation</li>
		<li>Add new file FbArray.cs for array fields management</li>
		</ul>
	</li>

	<li>Support for Stored Procs calls that have returns values
		<ul>
		<li>Status  : Pending.</li>
		<li>Comments: Modify the isc_dsql_prepare method of GDS implementation for
			allow to return the output parameters.</li>
		</ul>
	</li>
	
	<li>Implementation of FbClientPermission and FbClientPermissionAttribute
		<ul>
		<li>Status  : Pending</li>
		<li>Comments: See if these are really needed for Firebird</li>
		</ul>
	</li>

	<li>Improve Logger implementation
		<ul>
			<li>Status: Pending</li>
		</ul>
	</li>

</ul>	

** Testing

<ul>
	
	<li>Need a working mono and mcs</li>
	
	<li>Need access to a Firebird Relational Database or you can download
	it from <a href="http://firebird.sourceforge.net">here</a></li>
	
	<li>Get the Firebird .NET data provider from here as 
	<a href="http://lists.sourceforge.net/lists/listinfo/firebird-net-provider">firebird-net-provider</a>.  Make
	sure the Firebird .NET data provider binary assembly FirebirdSql.Data.Firebird.dll is
	installed in the same place as the mono class libraries.</li>
	
	<li>Has a ConnectionString format:
<pre>
 "Database=databasefile.gdb;User=user;Password=pass;Dialect=3;Server=hostname"
</pre>
	
	</li>
	
	<li>C# Example:
	
<pre>
 using System;
 using System.Data;
 using FirebirdSql.Data.Firebird;
 
 public class Test 
 {
    public static void Main(string[] args)
    {
        string connectionString = 
	       "Database=C:\\PROGRAM FILES\\FIREBIRD\\EXAMPLES\\EMPLOYEE.GDB;" +
	       "User=SYSDBA;" +
	       "Password=masterkey;" +
	       "Dialect=3;" +
	       "Server=localhost";
       IDbConnection dbcon = new FbConnection(connectionString);
       dbcon.Open();
       IDbCommand dbcmd = dbcon.CreateCommand();
       string sql = "SELECT * FROM employee";
       dbcmd.CommandText = sql;
       IDataReader reader = dbcmd.ExecuteReader();
       while(reader.Read()) {
            object dataValue = myReader.GetValue(0);
            string sValue = dataValue.ToString();
            Console.WriteLine("Value: " + sValue);
       }
       // clean up
       reader.Close();
       reader = null;
       dbcmd.Dispose();
       dbcmd = null;
       dbcon.Close();
       dbcon = null;
    }
 }
</pre>
	</li>
	<li>Building C# Example:
	<ul>
		<li>Save the example to a file, such as, TestExample.cs</li>
		<li>Build on Linux:
<pre>
	mcs TestExample.cs -r System.Data.dll \
	    -r FirebirdSql.Data.Firebird.dll
</pre>
		</li>
		<li>Build on Windows via Cygwin:
<pre>
	mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
	     TestExample.cs \
	     -lib:C:/cygwin/home/MyHome/mono/install/lib \
	     -r System.Data.dll -r FirebirdSql.Data.Firebird.dll
</pre>
		</li>
	</ul>
	</li>
	<li>Running the Example:
<pre>
mono TestExample.exe
</pre>
</li>

</ul>

