* SQL Lite Data Provider

<ul>
	<li>ADO.NET Data Provider for 
	the <a href"http://www.hwaci.com/sw/sqlite/">SQL Lite</a> which 
	is an embeddable SQL database engine</li>

	<li>From the SQL Lite web page: SQLite is a C library that 
	implements an embeddable SQL database engine. Programs that link with 
	the SQLite library can have SQL database access without 
	running a separate RDBMS process. The distribution 
	comes with a standalone command-line access program (sqlite) that 
	can be used to administer an SQLite database and which serves 
	as an example of how to use the SQLite library.  SQLite is not a client library 
	used to connect to a big database server. SQLite is the server. The SQLite 
	library reads and writes directly to and from the database files on disk.</li>

	<li>SQL Lite can be downloaded 
	from <a href="http://www.hwaci.com/sw/sqlite/download.html">here</a>.
	binaries exist for Linux and Windows.  sqlite.dll on Windows 
	and sqlite.so on Linux.  The source code is available too.</li>

	<li>Exists in namespace and assembly Mono.Data.SqliteClient</li>
	
	<li>Created by Vladimir Vukicevic so he could have a database of
	thumbnail images for mPhoto.  mPhoto is GUI application 
	for cataloging images.  mPhoto runs on Mono 
	and uses <a href="http://www.go-mono.com/gtk-sharp.html">GTK#</a> for its GUI.</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>Able to connect, execute commands, and retrieve data...</li>
	
	<li>Works in mPhoto by providing access to a SQL Lite database to store images.</li>
</ul>

** Action Plan

<ul>
	<li>Create a DataAdapter for SQL Lite named SqliteDataAdapter that can be used to 
	Fill a DataTable in a DataSet</li>
	
	<li>Get the method GetSchemaTable() in class SqliteDataReader to return a DataTable
	that works</li>
</ul>

** Testing

<ul>
	<li>Have a working mcs and mono</li>
	
	<li>Make sure Mono.Data.SqliteClient.dll was built and is installed
	in the same place as the mono class libraries.</li>
	
	<li>If you do not have <a href"http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a>,
	download it.  There are binaries for Windows and Linux.</li>
	
	<li>There is a test named SqliteTest.cs found at mcs/class/Mono.Data.SqliteTest/Test</li>
	
	<li>Has a connection string format of "URI=file:some/path".  For example, 
	the connection string "URI=file:SqliteTest.db" will use the database file 
	named SqliteTest.db, if it does not exist, the file will be created.</li>
	
	<li>C# Example:
<pre>
 using System;
 using System.Data;
 using Mono.Data.SqliteClient;
 
 public class Test 
 {
    public static void Main(string[] args)
    {
       string connectionString = "URI=file:SqliteTest.db";
       IDbConnection dbcon;
       dbcon = new SqliteConnection(connectionString);
       dbcon.Open();
       IDbCommand dbcmd = dbcon.CreateCommand();
       // requires a table to be created named employee
       // with columns firstname and lastname
       // such as,
       //        CREATE TABLE employee (
       //           firstname varchar(32),
       //           lastname varchar(32));
       string sql = 
          "SELECT firstname, lastname " + 
          "FROM employee";
       dbcmd.CommandText = sql;
       IDataReader reader = dbcmd.ExecuteReader();
       while(reader.Read()) {
            string FirstName = (string) reader[0];
            string LastName = (string) reader[1];
            Console.WriteLine("Name: " + 
                FirstName + " " + LastName);
       }
       // 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 Mono.Data.SqliteClient.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 Mono.Data.SqliteClient.dll
</pre>
		</li>
	</ul>
	</li>
	<li>Running the Example:
<pre>
mono TestExample.exe
</pre>
	</li>

</ul>

