diff options
author | Daniel Morgan <monodanmorg@yahoo.com> | 2003-01-19 20:39:25 +0300 |
---|---|---|
committer | Daniel Morgan <monodanmorg@yahoo.com> | 2003-01-19 20:39:25 +0300 |
commit | c40860f8f6073bf2e89beb08857b7e5b1cfb39bc (patch) | |
tree | 9d055e3f00ce5a41a7ddb1afcea68412a652c2ca | |
parent | f8369d1fa5c907ad65e716fb8fec6cfca9221d57 (diff) |
2003-01-19 Daniel Morgan <danmorg@sc.rr.com>
* doc/ibmdb2: added file which is new web page
about IBM DB2 data provider at Mono.Data.DB2Client
* makefile
* commands: added ibmdb2 web page to go-mono web site
* doc/ado-net: added a couple more developers email, plus made the
email spam resistant, added Mono's DB2 data provider to list,
added more info about the ProviderFactory and retrieving data using
ADO.NET from ASP.NET, add notes about testing, misc cleanup
* doc/mysql
* doc/postgresql
* doc/sqlclient
* doc/oracle
* doc/tdsclient
* doc/firebird
* doc/oledb
* doc/odbc
* doc/sybase
* doc/sqlite: added testing notes and C# examples
* doc/gtk-sharp: added links for GTK# for Windows
svn path=/trunk/mono/; revision=10712
-rw-r--r-- | ChangeLog | 28 | ||||
-rw-r--r-- | doc/ado-net | 158 | ||||
-rwxr-xr-x | doc/firebird | 81 | ||||
-rw-r--r-- | doc/gtk-sharp | 138 | ||||
-rwxr-xr-x | doc/ibmdb2 | 132 | ||||
-rwxr-xr-x | doc/mysql | 224 | ||||
-rwxr-xr-x | doc/odbc | 167 | ||||
-rwxr-xr-x | doc/oledb | 135 | ||||
-rwxr-xr-x | doc/oracle | 98 | ||||
-rw-r--r-- | doc/postgresql | 408 | ||||
-rwxr-xr-x | doc/sqlclient | 135 | ||||
-rwxr-xr-x | doc/sqlite | 102 | ||||
-rwxr-xr-x | doc/sybase | 120 | ||||
-rwxr-xr-x | doc/tdsclient | 124 | ||||
-rw-r--r-- | doc/web/commands | 1 | ||||
-rw-r--r-- | doc/web/makefile | 1 | ||||
-rwxr-xr-x | man/sqlsharp.1 | 32 | ||||
-rw-r--r-- | web/ado-net | 158 | ||||
-rwxr-xr-x | web/firebird | 81 | ||||
-rw-r--r-- | web/gtk-sharp | 138 | ||||
-rwxr-xr-x | web/ibmdb2 | 132 | ||||
-rwxr-xr-x | web/mysql | 224 | ||||
-rwxr-xr-x | web/odbc | 167 | ||||
-rwxr-xr-x | web/oledb | 135 | ||||
-rwxr-xr-x | web/oracle | 98 | ||||
-rw-r--r-- | web/postgresql | 408 | ||||
-rwxr-xr-x | web/sqlclient | 135 | ||||
-rwxr-xr-x | web/sqlite | 102 | ||||
-rwxr-xr-x | web/sybase | 120 | ||||
-rwxr-xr-x | web/tdsclient | 124 | ||||
-rw-r--r-- | web/web/commands | 1 | ||||
-rw-r--r-- | web/web/makefile | 1 |
32 files changed, 3288 insertions, 820 deletions
diff --git a/ChangeLog b/ChangeLog index 72993e22f32..4a6a83fe583 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,31 @@ +2003-01-19 Daniel Morgan <danmorg@sc.rr.com> + + * doc/ibmdb2: added file which is new web page + about IBM DB2 data provider at Mono.Data.DB2Client + + * makefile + * commands: added ibmdb2 web page to go-mono web site + + * doc/ado-net: added a couple more developers email, plus made the + email spam resistant, added Mono's DB2 data provider to list, + added more info about the ProviderFactory and retrieving data using + ADO.NET from ASP.NET, add notes about testing, misc cleanup + + * doc/mysql + * doc/postgresql + * doc/sqlclient + * doc/oracle + * doc/tdsclient + * doc/firebird + * doc/oledb + * doc/odbc + * doc/sybase + * doc/sqlite: added testing notes and C# examples + + * doc/gtk-sharp: added links for GTK# for Windows + + * man/sqlsharp.1: added providers Npgsql and MySQLNet + 2003-01-17 Duncan Mak <duncan@ximian.com> * runtime/Makefile.am: Add the new Mono.Data.DB2Client.dll. diff --git a/doc/ado-net b/doc/ado-net index 27e8fd09f03..0f40c246db8 100644 --- a/doc/ado-net +++ b/doc/ado-net @@ -1,39 +1,51 @@ * ADO.NET - The coordinator for the ADO.NET implementation is - <a href="mailto:rodrigo@ximian.com">Rodrigo Moya</a>, - with the collaboration of: - <a href="mailto:danmorg@sc.rr.com">Daniel Morgan</a>, - <a href="mailto:tim@timcoleman.com">Tim Coleman</a>, - <a href="mailto:brianlritchie@hotmail.com">Brian Ritchie</a>, and - <a href="mailto:vladimir@pobox.com">Vladimir Vukicevic</a>. + <p>Mono's ADO.NET Developers: + <ul> + <li>rodrigo -AT- ximian.comNOSPAM - <b>Rodrigo Moya</b> - coordinator + for the ADO.NET implementation and works on the OLE DB provider</li> + <li>danmorg -AT- sc.rr.comNOSPAM - <b>Daniel Morgan</b> - works on + the MySQL, PostgreSQL, and Oracle providers</li> + <li>tim -AT- timcoleman.comNOSPAM - <b>Tim Coleman</b> - works on + the Microsoft SQL Server, Sybase, and TDS providers</li> + <li>brianlritchie -AT- hotmail.comNOSPAM - <b>Brian Ritchie</b> - works on + the ODBC provider and the ProviderFactory</li> + <li>vladimir -AT- pobox.comNOSPAM - <b>Vladimir Vukicevic</b> - works on + the SQL Lite provider</li> + <li>cleared -AT- rogers.comNOSPAM - <b>Christopher Bockner</b> - works on + the IBM DB2 provider</li> + <li>vi64pa -AT- koti.soon.fiNOSPAM - <b>Ville Palo</b> - works on XML stuff in System.Data + including DataSet, XmlDataDocument, and has done lots of testing</li> + </ul> - * Action plan <p>The current plan to implement ADO.NET is as follows: <ul> <li>Either create ADO.NET providers or modify pre-exiting ADO.NET providers to - work with Mono + work with Mono</li> <ul> <li>Create ADO.NET Providers <ul> - <li><a href="http://www.go-mono.com/mysql.html">MySQL</a> - <li><a href="http://www.go-mono.com/odbc.html">ODBC</a> - <li><a href="http://www.go-mono.com/oracle.html">Oracle</a> - <li><a href="http://www.go-mono.com/oledb.html">OLE DB</a> - <li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a> - <li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a> - <li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a> - <li><a href="http://www.go-mono.com/sybase.html">Sybase</a> - <li><a href="http://www.go-mono.com/tdsclient.html">TDS Generic</a> + <li><a href="http://www.go-mono.com/ibmdb2.html">IBM DB2 Universal Database</a></li> + <li><a href="http://www.go-mono.com/mysql.html">MySQL</a></li> + <li><a href="http://www.go-mono.com/odbc.html">ODBC</a></li> + <li><a href="http://www.go-mono.com/oracle.html">Oracle</a></li> + <li><a href="http://www.go-mono.com/oledb.html">OLE DB</a></li> + <li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a></li> + <li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a></li> + <li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a></li> + <li><a href="http://www.go-mono.com/sybase.html">Sybase</a></li> + <li><a href="http://www.go-mono.com/tdsclient.html">TDS Generic</a></li> <li>Providers which we do not have, but we would like to have. Currently, - some of these databases are supported via the ODBC or OLEDB providers. + some of these databases are supported via the ODBC or OLEDB providers.</li> <ul> - <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> + <li><a href="http://msdn.microsoft.com/library/en-us/dnsql2k/html/sqlxml_intromanagedclasses.asp?frame=true">Managed Classes for SqlXml</a> which is + a .NET data provider for retrieving XML data from a Microsoft SQL Server 2000 database. The System.Data.SqlClient provider + in Mono can be used as a starting point at mcs/class/System.Data/System.Data.SqlClient.</li> <li><a href="http://www.hughes.com.au/">miniSQL</a></li> <li><a href="http://www.sleepycat.com/">BerkeleyDB (Sleepycat)</a></li> <li><a href="http://www.sapdb.org/">SapDB</a></li> @@ -41,18 +53,18 @@ <li>dbase or xbase type database files</li> <li>Others are welcome</li> </ul> - </ul> + </ul></li> <br> <li>Modify Pre-existing ADO.NET Providers to work with Mono. This may require fixing or implementing areas of Mono too. <ul> <li><a href="http://www.go-mono.com/firebird.html">Firebird Interbase</a></li> - <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a PostgreSQL Managed data provider written - in 100% C# and does not require a client library </li> - <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a MySQL Manager data provider written in 100% C# and does not - require a client library</li> - <li><a href="http://sourceforge.net/projects/mysqldrivercs/">MySQLDriverCS</a> is a MySQL data provider written in C#</li> - + <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a + PostgreSQL Managed data provider written + in 100% C#, does not require a client library, and works on Mono</li> + <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a + MySQL Manager data provider written in 100% C#, does not + require a client library, and works on Mono</li> </ul> </li> </ul> @@ -64,13 +76,16 @@ test connection strings, and connect to various ADO.NET providers in Mono. The SQL# CLI can be found in mcs/tools/SqlSharp/SqlSharpCli.cs</li> + <li><p><b>SQL# GUI - a GUI tool</b> written in C# to execute SQL commands. Currently, there is SQL# For GTK# which can be found at mcs/tools/SqlSharp/gui/gtk-sharp It has a SQL editor with - syntax hi lighting of SQL keywords</li> + syntax hi lighting of SQL keywords. This will be + moving to its own cvs modeul sqlsharpgtk.</li> + <li><b>Configuration Command-Line and GUI Tools for ADO.NET</b>. These tools have not been started. The tools would be written in C# and run on Mono. The @@ -93,6 +108,10 @@ <p>Variouls ADO.NET Providers have been created: PostgreSQL, MySQL, Sybase, SQL Lite, Microsoft SQL Server, OLE DB, ODBC, and TDS Generic. See their respective web page for more information. + + <p>Constraints need lots of work + + <p>TypeDataSetGenerator needs to be stubbed and implemented. <p><b>DataSet, DataAdaptor, DataTable, DataRelation, DataRow, DataColumn, DataColumnCollection, DataRowCollection, and others</b> need more work. There are @@ -102,19 +121,56 @@ the classes: DataSet, XmlDataDocument, and the method ExecuteXmlReader() that exists in a provider's class that implements IDbCommand, and others. Stuart Caborn has started the XML support in a DataSet. Tim Coleman started - XML support in the ExecuteXmlReader() in a SqlCommand. + XML support in the ExecuteXmlReader() in a SqlCommand. Ville Palo has been + heavily modifying DataSet, XmlDataDocument, and other classes for reading + and writing XML. <p><b>ADO.NET Provider Factory</b> has been started by Brian Ritchie. The - Provider Factory is used to dynamically create - connections, commands, parameters, and data adapters based on configuration information. This - provider factory can also provide utility functions needed by a lot of - providers but are not exposed via the provider. + Provider Factory is way to dynamically create + connections, commands, parameters, and data adapters based on configuration information. The + provider factory also provides utility functions needed by a lot of + providers but are not exposed via the provider. The ProviderFactory + is found at mcs/class/Mono.Data and includes a test named test.cs for it in + mcs/class/Mono.Data/Test. Also, take a look at the sample .config file for the + test.exe application named test.exe.config. The .config file is automatically + read when you use the Mono.Data.ProviderFactory or Mono.Data.DataTools. <p><b>Integration with ASP.NET</b> has not been started, such as, data binding to a System.Web.UI.WebControls.DataGrid. This may involve implementing many classes - in System.Web and System.Data. Gonzalo, Gaurav, Leen, Patrik, Duncan, and others are - working very hard on the ASP.NET support. If you want to help, - contact <a href="mailto:gonzalo@ximian.com">Gonzalo Paniagua Javier</a> + in System.Web and System.Data. If you want to help, + contact Gonzalo Paniagua Javier. Here is information about using ADO.NET in ASP.NET: + <ul> + <li>Take a look at xsp in cvs and look at the examples in test: dbpage1.aspx + and dbpage2.aspx: + <ul> + <li>Notice that the namespace System.Data is imported via <b>import</b></li> + <li>A NameValueCollection is gotten using ConfigurationSettings.AppSetings. These + settings are gotten from the file server.exe.config which is a XML file. The XML + file has a section appSettings. In the appSettings section, you have keys + for DBProviderAssembly, DBConnectionType, and DBConnectionString. + <ul> + <li><b>DBProviderAssembly</b> is the assembly of the ADO.NET provider. + For example: + "Mono.Data.PostgreSqlClient"</li> + <li><b>DBConnectionType</b> is the System.Type of the class that + implements System.Data.IDbConnection that is found + in the DBProviderAssembly. + For example: + "Mono.Data.PostgreSqlClient.PgConnection"</li> + <li><b>DBConnectionString</b> is the ConnectionString to set to the + IDbConnection object to use in opening a connection to a data source. + For Example: + "hostaddr=127.0.0.1;user=monotest;password=monotest;dbname=monotest"</li> + </ul> + <li>The function GetConnectionData() gets the database provider assembly, connection type, + and connection string parameters if they exist; otherwise, it uses default values. This is + done during the loading of the web page.</li> + <li>With the connection parameters, the assembly is loaded, the connection type is verified that + it implements IDbConnection and an instance of the class can be created, creates a instance + of the class, sets the connection string, and opens the connection.</li> + </ul> + </li> + </ul> <p><b>Integration with Windows.Forms</b> has not been started, such as, data binding to a System.Windows.Forms.DataGrid. This may involve implementing many classes @@ -130,27 +186,6 @@ how this can be done is appreciated. Adam Treat would be the best person to ask about QT#. - <p><b>Integration with GDA#</b> has not been started. It is - included in the GTK# project, GDA# - does not require GTK+ nor GNOME. GDA# is C# bindings - to <a href="http://www.gnome-db.org/">GDA</a> which - is an ADO/OLE-DB like layer for Linux provided as a C library. Classes - that would bind data between the ADO.NET data model and the GDA data model will - need to be created. Rodrigo Moya is the best person to contact about this. - - <p><b>Integration with GnomeDb#</b> has not been started. It is - included in the GTK# project and uses GDA# for its data access model. - Creating classes to bind data between the data model in ADO.NET - and the data model that exists in GDA# and GnomeDb# will - need to be started. GnomeDb# is C# bindings to - <a href="http://www.gnome-db.org/">GnomeDb</a> which uses - <a href="http://www.gnome-db.org/">GDA</a> as its data access layer. GnomeDb - is a C API in a library that contains - gtk+ widgets (GUI controls) for data access. There are some nifty widgets - (GUI controls) that can be used, such as, GnomeDbGrid, GnomeDbBrowswer, - GnomeDbSqlEditor, GnomeDbList, GnomeDbLogin, GnomeDbReportEditor, GnomeDbTableEditor, - GnomeDbCombo, and GnomeDbForm. Rodrigo Moya is the best person to contact. - <p><b>Building System.Data</b> <p>The System.Data.dll gets built with the rest of the class library. @@ -194,3 +229,12 @@ </pre> </ul> +* Testing + +<ul> + <li>Testing connection-oriented classes are done via the provider specific tests + + <li><a href="http://www.go-mono.com/testing.html">Testing non-connection classes</a> are + done via mono's modified version of NUnit.</li> + +</ul> diff --git a/doc/firebird b/doc/firebird index 066da551f58..8e1f73ef126 100755 --- a/doc/firebird +++ b/doc/firebird @@ -8,7 +8,7 @@ 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/firebird">here</a></li> + downloaded from <a href="http://sourceforge.net/projects/firebird/">here</a></li> <li>The Firebird .NET Data provider has been made available by Carlos Guzmán Álvarez (aka "Carlos G.A."), who has also made a @@ -16,7 +16,7 @@ </ul> -* Current Status +** Current Status <ul> <li>Currently, it is able to connect to Firebird and Interbase databases @@ -56,7 +56,7 @@ </ul> -* Action Plan +** Action Plan <ul> <li>Bug fixing</li>
@@ -98,3 +98,78 @@ </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>C# Example for Mono's System.Data.OleDb: +<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); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = "SELECT * FROM employee"; + dbcmd.ConnectionString = 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> + diff --git a/doc/gtk-sharp b/doc/gtk-sharp index dc075765c2a..1f286e59c52 100644 --- a/doc/gtk-sharp +++ b/doc/gtk-sharp @@ -3,19 +3,145 @@ <a href="http://gtk-sharp.sourceforge.net">Gtk#</a> (Gtk sharp) is a set of C# language bindings for the <a href="http://www.gtk.org">Gtk+</a> toolkit and other - libraries that are part of the <a - href="http://www.gnome.org">GNOME</a> platform . + libraries that are part of the + <a href="http://www.gnome.org">GNOME</a> platform . ** API of Gtk# The API is browsable - <a - href="http://primates.ximian.com/~tvgm/gtk-sharp-docs/">here</a> + <a href="http://primates.ximian.com/~tvgm/gtk-sharp-docs/">here</a> ** Where to learn more. - Visit the official site for the <a - href="http://gtk-sharp.sourceforge.net">Gtk# Project</a>. + Visit the official site for the <a href="http://gtk-sharp.sourceforge.net">Gtk# Project</a>. The <a href="http://www.go-mono.org/faq">Mono FAQ</a> has some useful information too. + +** GTK# On Linux +<p>Where to get distributions of GTK# for Linux: TODO + +<p>Buidling on Linux: + +<ul> + <li>Get GTK# source from <a href="http://gtk-sharp.sourceforge.net">Gtk# Project</a>.</li> + <li>run ./autogen.sh --prefix=my_mono_installation_prefix</li> + <li>make</li> + <li>make install</li> +</ul> + +** GTK# On Windows + +<p>There is a Windows Installer for GTK# <a href="http://www.sport-huettn.de/mono/gtk-sharp-0.6-stable-2.exe">here</a>.
+ +<p>If you want to build GTK# yourself on Windows:
+
+<p>To build gtk# under windows, you will need the following:
+
+<ul>
+ <li>cygwin from <a href="http://www.cygwin.com/">here</a> When installing Cygwin via setup.exe,
+ by default binutils and other tools do not get installed; you have to make
+ sure to select these items. Just make
+ sure Base and Development are set to Install.</li>
+ <li>Mono 0.17 or later from <a href="http://www.go-mono.com/download.html">here</a>
+ You can use Windows Setup Wizard (NT/2000/XP).</li>
+ <li>GTK+ 2.0 (and dependencies). You can obtain gtk+ 2.0 by either of the
+following:
+ <ul>
+ <li>You can get a Windows Installer at:
+ <a href="http://www.dropline.net/jade/download.html">here</a> </li>
+ <li>or get the separate binary and dev/lib packages at
+ at <a href="http://www.gimp.org/~tml/gimp/win32/downloads.html">here</a> </li>
+ <li>or binary package from Dev-C++ site <a href="http://www.bloodshed.net/dev/packages/gtk.html">here</a> </li>
+ <li>or get Gtk4Win <a href="http://wingtk.sourceforge.net/index.html">here</a> </li>
+ <li>or the source at <a href="http://www.gtk.org/">here</a> </li>
+ </ul>
+ </li>
+ <li>binary distriubtion of a current web browser
+ like Internet Explorer 4.0, Mozilla 1.0, or Netscape 7.0 which
+ includes things like msvcrt.dll.</li>
+ <li>Microsoft .NET Framework at
+ <a href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml&frame=true">here</a> </li>
+
+<p>If you are running Windows 95/98/ME, then you will need Unicode support.
+Look in
+mono-list archives for information about how to get
+Mono to work on Windows 9x.
+<a href="http://lists.ximian.com/archives/public/mono-list/2002-December/004158.html">here</a>
+
+<p>Environment Variables to set:
+<ul>
+<li>PATH - set to your mono installation bin and lib path.
+ For example, my mono installation prefix is:
+<pre>
+F:/cygwin/home/DanielMorgan/mono/install
+</pre>
+ <p>So, I would set my PATH in the Windows Control Panel as:
+<pre>
+F:/cygwin/home/DanielMorgan/mono/install/bin;F:/cygwin/home/DanielMorgan/mono/install/lib</li>
+</pre>
+</li>
+<li>LD_LIBRARY_PATH - set to your mono installation lib path</li>
+<li>PKG_CONFIG_PATH - set to your mono installation lib/pkgconfig path, such
+ as,
+<pre>
+ F:/cygwin/home/DanielMorgan/mono/install/lib/pkgconfig</li>
+</pre>
+
+ <p>If you got the gtk-sharp source, cd to the gtk-sharp directory, type:
+<pre>
+ ./autogen.sh --prefix=~/mono/install
+</pre>
+
+ <p>Set your --prefix= to whatever your mono installation prefix is located.
+ This will take awhile to go through the ./autogen.sh and ./configure...
+
+ <p>After that it finishes succesfully, you run make with the makefile.win32
+ like:
+<pre>
+ make -f makefile.win32
+</pre>
+
+ <p>After that finishes succesfully, you can copy to your mono installation lib
+ path like:
+<pre>
+ cp */*.dll ~/mono/install/lib
+</pre>
+</ul>
+
+<p>The pkg-config files for
+gtk+ 2.0 and dependencies will need to be set correctly if they haven't
+already been.
+
+<p>Look in your mono installation/lib/pkgconfig, such as,
+<pre>
+F:/cygwin/home/DanielMorgan/mono/install/lib/pkgconfig
+</pre>
+
+<p>You will find files like: gtk+-2.0.pc
+
+<p>Edit the line that says
+
+<pre>
+ prefix=something
+</pre>
+
+<p>And set it to your mono installation prefix, such as,
+
+<pre>
+ prefix=F:/cygwin/home/DanielMorgan/mono/install
+</pre>
+
+<p>Do this for all the .pc files in that directory. If there are not any, then
+you will need to create them. Or get them from somewhere like the dev
+packages at
+<a href="http://www.gimp.org/~tml/gimp/win32/downloads.html">here</a>
+
+
+** GTK# On Solaris
+
+ TODO
+
+** GTK# On AIX
+
+ TODO
diff --git a/doc/ibmdb2 b/doc/ibmdb2 new file mode 100755 index 00000000000..3c149563380 --- /dev/null +++ b/doc/ibmdb2 @@ -0,0 +1,132 @@ +* IBM DB2 Data Provider +<ul> + <li>Exists in namespace DB2ClientCS and assembly Mono.Data.DB2Client</li> + + <li>The source code exists at mcs/class/Mono.Data.DB2Client</li> + + <li>Requires the Call Level Interface to IBM DB2 shared library. This + is db2cli.dll on Windows. The IBM DB2 CLI API is very similar to the ODBC API. If + you take a look at Mono's System.Data.Odbc ODBC provider, you will see the + DllImport's have similiar function names.</li> + + <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> can be downloaded from IBM.</li> + + <li>IBM DB2 Provider created by Christopher Bockner.</li> +</ul> + +** Current Status + +<ul> + <li>Compiles on Windows and Linux. Works on Windows. Still needs to be tested on Linux.</li> + + <li>Able to connect to IBM DB2</li> + + <li>Able to execute DML, such as, CREATE TABLE via ExecuteNonQuery()</li> + +</ul> + +** Action Plan + +<ul> + <li>Still needs work to get it to retrieve data via ExecuteReader() and + use the data reader to read data.</li> + +</ul> + +** Testing + +In order to test. +<ul> + <li>Have working mono and mcs setup</li> + + <li>Have access to an IBM DB2 database. If you do not have access, download the + <a href="http://www-3.ibm.com/software/data/db2/">IBM DB2</a> software. There + are versions for Windows, Linux, AIX, and Sun Solaris.</li> + + <li>Make sure the assembly Mono.Data.DB2Client.dll was built and installed + where the other class libraries are installed.</li> + + <li>If you do not have the source to mcs, get the source from + <a href="http://www.go-mono.com/download">here</a></li> + + <li>In mcs/class/Mono.Data.DB2Client/Test/DBConnTest, you will find + a DBConnTest.cs.</li> + + <li>To build DBConnTest: + <ul> + <li>On Unix:</li> +<pre> +mcs DBConnTest.cs -r System.Data.dll -r Mono.Data.DB2Client.dll +</pre> + </li> + <li>On Windows via Cygwin: +<pre> +mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe DBConnTest.cs \ + -lib:C:/cygwin/home/MyHome/mono/install/lib \ + -r System.Data.dll -r Mono.Data.DB2Client.dll +</pre> + </li> + <li>To run it on mono: +<pre> +mono DBConnTest.exe database userid password +</pre> + </li> + </ul> + </li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.DB2Client; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "DSN=sample;UID=db2admin;PWD=mypass"; + IDbConnection dbcon = new DB2ClientConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "CREATE TABLE mono_db2_test1 ( " +
+ " testid varchar(2), " +
+ " testdesc varchar(16) " +
+ ")"; + dbcmd.ConnectionString = sql; + dbcmd.ExecuteNonQuery(); + 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.DB2Client.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.DB2Client.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/doc/mysql b/doc/mysql index b8c96d973d3..e45ea0bee0b 100755 --- a/doc/mysql +++ b/doc/mysql @@ -3,27 +3,32 @@ <ul> <li>MySQL Data Provider for <a href="http://www.mysql.com/">MySQL</a> databases. It is written in C# and uses - the MySQL C Client Library + the MySQL C Client Library</li> - <li>Exists in namespace Mono.Data.MySql and assembly Mono.Data.MySql + <li>Exists in namespace Mono.Data.MySql and assembly Mono.Data.MySql</li> <li>Works on Windows and Linux via the MySQL client shared library - (libmySQL.dll on Windows and libmysqlclient.so on Linux). + (libmySQL.dll on Windows and libmysqlclient.so on Linux).</li> - <li>Started by Daniel Morgan using C# Bindings to MySQL from Brad Meril. + <li>Started by Daniel Morgan using + <a href="http://www.cybercom.net/~zbrad/DotNet/MySql/">C# Bindings to MySQL</a> from <a href="mailto:zbrad@cybercom.net">Brad Merill</a> <li><a href="http://www.mysql.com/articles/dotnet/">Exploring MySQL in the Microsoft .NET Environment</a> is an article - by Mr. Venu who is a MySQL AB developer. + by Mr. Venu who is a MySQL AB developer.</li> - <li>Other projects which have created a .NET Data provider for MySQL in C# + <li>There is a good alternative to the provider in Mono: <ul> - <li><a href="http://sourceforge.net/projects/mysqldrivercs/">MySQLDriverCS</a> is a MySQL provider written in C# - <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a MySQL Manager provider written in C# + <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> from ByteFX + is a MySQL Managed provider written in 100% C#, + does not require a client library, and works on Microsoft .NET and Mono. You + need at least Mono 0.18 and MySQLNet 0.65 for it to work on Mono.</li> </ul> + </li> + <li>Testing for Mono's Mono.Data.MySql and ByteFX's ByteFX.Data.MySQLClient is below...</li> </ul> -* Current Status +** Current Status <ul> <li>can connect @@ -48,7 +53,7 @@ can be modified with a text editor. </ul> -* Action plan +** Action plan The current plan to work on the MySQL data provider: @@ -64,3 +69,202 @@ The current plan to work on the MySQL data provider: <li>Get the provider to work like other data providers </ul> + +** Testing for Mono's MySQL provider (Mono.Data.MySql) + +<ul> + <li>Have access to a MySQL database or download it from + <ul> + <li><a href="http://www.mysql.com/downloads/index.html">MySQL AB</a></li> + </ul> + </li> + + <li>Take a look at MySqlTest.cs in mcs/class/Mono.Data.MySql/Test</li> + + <li>Has a ConnectionString format: +<pre> + "Server=hostname;" + + "Database=database;" + + "User ID=username;" + + "Password=password" + (or) + "host=hostname;" + + "dbname=database;" + + "user=username;" + + "passwd=password" +</pre> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.MySql; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=mysql;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new MySqlConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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.MySql.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.MySql.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + +** Testing for MySQLNet provider (ByteFX.Data.MySQLClient) + +<ul> + <li>Have access to a MySQL database or download it from + <ul> + <li><a href="http://www.mysql.com/downloads/index.html">MySQL AB</a></li> + </ul> + </li> + + <li>MySQLNet can be gotten from <a href="http://sourceforge.net/projects/mysqlnet/">here</a> and the + binary assembly ByteFX.Data.dll needs to be installed + in the same place as the mono class libraries.</li> + + <li>MySQLNet requires <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp">SharpZipLib</a> which is + a Zip Library written in 100% C#. This is used for compression/decompression of data + sent/received over the network. The SharpZipLib binary assembly SharpZipLib.dll should + be installed in the same place as the mono class libraries.</li> + + <li>Has a ConnectionString format: +<pre> +"Server=hostname;" + +"Database=database;" + +"User ID=username;" + +"Password=password" +</pre> + </li> + <li>C# Example: +<pre> + using System; + using System.Data; + using ByteFX.Data.MySQLClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=mysql;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new MySQLConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 ByteFX.Data.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 ByteFX.Data.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + @@ -2,51 +2,174 @@ <ul> <li>Exists in namespace System.Data.Odbc and assembly System.Data - <li>Works on Windows and Linux + <li>Works on Windows and Linux. Should have no problems working on UNIX too. <li>Works on Windows via the native Windows odbc32.dll - <li>Works on Linux via <a href="http://www.unixodbc.org/">unixODBC</a> + <li>Works on Linux via: - <li>List of unixODBC <a href="http://www.unixodbc.org/drivers.html">drivers</a> and - an alternative list + <ul> + <li><a href="http://www.unixodbc.org/">unixODBC</a> which has + commercial support + from <a href="http://www.easysoft.com/">Easysoft</a></li> + + <li><a href="http://www.iodbc.org/">iODBC</a> which has + a commercial support + from <a href="http://oplweb.openlinksw.com:8080/download/">OpenLink Software</a></li> + </ul> - <li>An alternative to unixODBC, but not tested with this - provider is <a href="http://www.iodbc.org">iODBC</a> - - <li>Another alternative to unixODBC, but not tested this provider is - <a href="http://oplweb.openlinksw.com:8080/download/">OpenLink's</a>. + <li>List of unixODBC <a href="http://www.unixodbc.org/drivers.html">drivers</a> <li>List of <a href="http://ourworld.compuserve.com/homepages/Ken_North/odbcvend.htm">ODBC Vendors</a> + + <li>ODBC can connect to various databases which has an ODBC driver installed: + <ul> + <li><a href="http://www.mysql.com/">MySQL</a> + <li><a href="http://www.postgresql.org/">PostgreSQL</a> + <li><a href="http://www.oracle.com/">Oracle</a> + <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a> + <li><a href="http://www.sybase.com/downloads">Sybase</a> and + <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a> ( + via <a href="http://www.freetds.org/">FreeTDS</a> on UNIX) + <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> + <li><a href="http://www.microsoft.com/office/access/default.asp">MS Access</a> + (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a> on UNIX) + </ul> - <li>ODBC Provider created by Brian Ritchie. + <li>ODBC Provider created by Brian Ritchie.</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> - <li>Connect on Windows via native Windows odbc32.dll - - <li>Connect on Linux via unixODBC's libodbc.so + <li>Can Connect on: + <ul> + <li>Windows via native Windows odbc32.dll</a></li> + <li>Linux via: + <ul> + <li>unixODBC's libodbc.so</li> + <li>iODBC's libiodbc.so</li> + </ul> + </li> + </ul> + </li> <li>Various databases have been tested using their - ODBC drivers: MySQL, Oracle, IBM DB2, and Microsoft SQL Server + ODBC drivers: MySQL, PostgreSQL, Oracle, IBM DB2, and Microsoft SQL Server</li> - <li>Can execute non-query commands via ExecuteNonQuery of a OdbcCommand + <li>Can execute non-query commands via ExecuteNonQuery of a OdbcCommand</li> <li>Can execute aggreates and retrieve a single row single column result via - ExecuteScalar of a OdbcCommand + ExecuteScalar of a OdbcCommand</li> <li>Can execute queries via ExecuteReader of a OdbcCommand and - retrieve results using an OdbcDataReader. + retrieve results using an OdbcDataReader</li> + + <li>Can get a DataTable containing schema info via GetSchemaTable() in a OdbcDataReader</li> - <li>Can get a DataTable containing schema info via GetSchemaTable() in a OdbcDataReader + <li>Can Fill a DataTable in a DataSet via an OdbcDataAdapter</li> </ul> -* Action Plan +** Action Plan <ul> - <li>Create a Data Adapter to Fill data into a DataTable in a DataSet - <li>TODO + <li>Fixing bugs + + <li>Testing with other setups +</ul> + +** Testing ODBC provider + +<p>Test Mono's ODBC provider System.Data.Odbc with the MySQL ODBC driver MyODBC + +<p><ul> + <li>Take a look at OdbcTest.cs in mcs/class/System.Data/Test</li> + + <li>Here is a ConnectionString format if you have a DSN setup: +<pre> +"DSN=dataSetName;UID=username;PWD=password" +</pre> + </li> + <li>Here is a ConnectionString format if you do not have DSN (have not + gotten this to work): +<pre> +"DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=;DATABASE=pubs" +</pre> + </li> + <li>C# Example: +<pre> + using System; + using System.Data; + using System.Data.Odbc; + + public class Test + { + public static void Main(string[] args) + { + // have an ODBC DSN setup named MYSQLDSN + // that accesses a MySQL database via + // MyODBC driver for ODBC with a + // hostname of localhost and database test + string connectionString = + "DSN=MYSQLDSN;" + + "UID=mysql;" + + "PWD=;"; + IDbConnection dbcon; + dbcon = new OdbcConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 +</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 +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + </ul> diff --git a/doc/oledb b/doc/oledb index d1b16252d14..a4f80e53d47 100755 --- a/doc/oledb +++ b/doc/oledb @@ -1,53 +1,142 @@ * OLE DB Provider + <ul> <li> Provides a OleDb-like provider for Mono - using <a href="http://www.gnome-db.org/">GDA</a> as the data access layer. + using <a href="http://www.gnome-db.org/">GDA</a> as the data access layer.</li> - <li> Exists in namespace System.Data.OleDb and assembly System.Data + <li> Exists in namespace System.Data.OleDb and assembly System.Data</li> - <li>Created by Rodrigo Moya + <li>Created by Rodrigo Moya</li> - <li>LibGDA has providers for: + <li>LibGDA has providers for:</li> <ul> - <li><a href="http://www.mysql.com/">MySQL</a> - <li><a href="http://www.postgresql.org/">PostgreSQL</a> - <li>XML - <li>ODBC (via <a href="http://www.unixodbc.org/">unixODBC</a>) - <li><a href="http://www.oracle.com/">Oracle</a> - <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a> + <li><a href="http://www.mysql.com/">MySQL</a></li> + <li><a href="http://www.postgresql.org/">PostgreSQL</a></li> + <li>XML</li> + <li>ODBC (via <a href="http://www.unixodbc.org/">unixODBC</a>)</li> + <li><a href="http://www.oracle.com/">Oracle</a></li> + <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a></li> <li><a href="http://www.sybase.com/downloads">Sybase</a> and <a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a> ( - via <a href="http://www.freetds.org/">FreeTDS</a>) - <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> - <li><a href="http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a> - <li><a href="http://www.microsoft.com/office/access/default.asp">MS Access</a> - (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a>) + via <a href="http://www.freetds.org/">FreeTDS</a>)</li> + <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a></li> + <li><a href="http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a></li> + <li><a href="http://www.microsoft.com/office/access/default.asp">MS Access</a></li> + (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a>)</li> </ul> + </li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> <li>The OleDb provider is working with libgda (an OLE-DB/ADO data access for Unix). The C-Sharp bindings to libgda currently work - meaning they can compile, run, and you can connect to a - PostgreSQL database via libgda via the C-Sharp bindings to libgda. + PostgreSQL database via libgda via the C-Sharp bindings to libgda.</li> <li>Basic functionality (execution of commands, data retrieval, transactions, etc) are - now working. + now working.</li> <li>An inital implementation of GetSchemaTable() for the OleDbDataReader has been checked into cvs. GetSchemaTable() isn't correct for OleDb, - but the foundation is there. + but the foundation is there.</li> </ul> -* Action Plan +** Action Plan <ul> <li>Current focus is on filling up the missing pieces (Data adapters - mainly) and schema support. + mainly) and schema support.</li> <li>We need help building libgda on Windows though. libgda - builds find on linux though. + builds find on linux though.</li> + + <li>Need to make the OleDb provider compatible with the OleDb provider in Microsoft .NET</li> + </ul> + +** Testing OleDb with libgda's PostgreSQL provider - <li>Need to make the OleDb provider compatible with the OleDb provider in Microsoft .NET +<ul> + <li>Requires a working mono and mcs</li> + <li>Requires Linux because the OleDb provider uses libgda and libgda only + works on Linux.</li> + <li>Connection String format: "Provider=providerName;...". providerName is the + name of the Provider you use, such as, PostgreSQL, MySQL, etc. The elipsis ... + means that the connection parameters are dependent upon the provider being used and + are passed to libgda for connecting. Such paramters, can be: Database, User ID, Password, + Server, etc...</li> + <li>See the test TestOleDb.cs found at mcs/class/System.Data/System.Data.OleDb</li> + <li>C# Example for Mono's System.Data.OleDb: +<pre> + using System; + using System.Data; + using System.Data.OleDb; + + public class Test + { + public static void Main(string[] args) + { + // there is a libgda PostgreSQL provider + string connectionString = + "Provider=PostgreSQL;" + + "Addr=127.0.0.1;" + + "Database=rodrigo"; + IDbConnection dbcon; + dbcon = new OleDbConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 +</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 +</pre> + </li> </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> +</li> + +</ul> + diff --git a/doc/oracle b/doc/oracle index 9dc3864535f..e69f378b1a9 100755 --- a/doc/oracle +++ b/doc/oracle @@ -1,4 +1,5 @@ * Oracle Data Provider + <ul> <li>Exists in namespace System.Data.OracleClient and assembly System.Data.OracleClient</li> @@ -7,10 +8,14 @@ <li>Works with Oracle 8i</li> <li>More information about Oracle can be found at <a href="http://www.oracle.com/"/>here</a></li> + + <li>Created by Daniel Morgan.</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> <li>OracleConnection can connect to an Oracle 8i database on @@ -30,7 +35,7 @@ </ul> -* Action Plan +** Action Plan <ul> <li>Get the makefile for the Borland C++ compiler to work @@ -50,3 +55,92 @@ Marshalling in C# to the oci shared library (oci.dll on Windows)</li> </ul> + +** Testing Mono.Data.OracleClient + +<ul> + <li>Have a working mono and mcs</li> + + <li>Have access to an Oracle 8i database or download it from + <a href="http://www.oracle.com/">Oracle</a>. Registration to the + Oracle Technology Network is free. If installing on Linux, I suggest you + do a lot of searching to see how others installed Oracle on Linux.</li> + + <li>Make sure Mono.Data.OracleClient.dll assembly is built, if not, go + into Mono.Data.OracleClient and do a make -f makefile.gnu (on Linux) or + ../../nant/NAnt.exe (on Cygwin).</li> + + <li>The OCI Glue Library Mono.Data.OracleClient.ociglue.dll will need to be + created as well. Has only been tested with lc (Microsoft Visual C++ command-line compiler). + There is a make file for Microsoft C++ and Borland C++. I'm sure it wouldn't be hard + to create a makefile for gcc if installing on Linux.</li> + + <li>Take a look at TestOracleClient.cs found at mcs/class/System.Data.OracleClient/Test</li> + + <li>Has a connection string format: +<pre> +"Data Source=tnsname;User ID=userid;Password=password" +</pre> + </li> + <li>C# Example: +<pre> + using System; + using System.Data; + using System.Data.OracleClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Data Source=testdb;" + + "User ID=scott;" + + "Password=tiger;"; + IDbConnection dbcon; + dbcon = new OracleConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "insert into scott.emp " + + "(empno, ename, job, sal, deptno) " + + "values(123," + + "'Don Smith'," + + "'Cook'," + + "23021," + + "20)"; + dbcmd.ConnectionString = sql; + dbcmd.ExecuteNonQuery(); + 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 System.Data.OracleClient.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 System.Data.OracleClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/doc/postgresql b/doc/postgresql index afc7ecea2dd..2bd0b74d09f 100644 --- a/doc/postgresql +++ b/doc/postgresql @@ -1,16 +1,27 @@ * PostgreSQL Data Provider <ul> - <li>Exists in namespace Mono.Data.PostgreSql and assembly Mono.Data.PostgreSql + <li>Exists in namespace Mono.Data.PostgreSql and assembly Mono.Data.PostgreSql</li> <li>Is a Mono Data Provider for the <a href="http://www.postgresql.org/">PostgreSQL</a> - client/server database management system. + client/server database management system.</li> <li>Written in C# and has C# bindings to the PostgreSQL C Client library pq.dll on Windows - and libpq.so on Linux. + and libpq.so on Linux.</li> + + <li>Alternative to the PostgreSQL provider in Mono: + <ul> + <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> + is a Managed PostgreSQL provider written in 100% C#, does not require a client library, + and works on Microsoft .NET and Mono. + </li> + </ul> + </li> + + <li>See Testing for both Mono's Mono.Data.PostgreSqlClient and Npgsql.</li> </ul> -* Current Status +** Current Status <ul> <li>We are able to do simple CREATE TABLE, DROP TABLE, UPDATE, INSERT, and @@ -70,12 +81,23 @@ See the test mcs/class/System.Data/Test/TestSqlDataAdapter.cs to see it in action. </ul> -* Testing the PostgreSQL Provider +** Action Plan + + <p>More testing and fixing bugs... + + <p>Eventually replace the PostgreSQL data provider in Mono + with <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>. + Npgsql is a .Net Data Provider for PostgreSQL which implements + the <a href="http://developer.postgresql.org/docs/postgres/protocol.html">PostgreSQL Frontend/Backend Protocol</a>. + Npgsql is implemented in 100% C#. This provider was created by Francisco Figueiredo jr. + and has many programmers developing the provider. + +** Testing Mono's Mono.Data.PostgreSqlClient <ul> * <p>In order to test Mono.Data.PostgreSqlClient, you will need to have access to a remote PostgreSQL DBMS, or you will have to install - one locally. PostgreSQL was first ADO.NET provider created in Mono. + one locally. PostgreSQL was the first ADO.NET provider created in Mono. <p>Why use PostgreSQL? Because it is free software, has a client library that is easy to use, PostgreSQL is easy to install on @@ -94,7 +116,9 @@ user "postgres". <pre> -"host=localhost;dbname=test;user=postgres" +"Server=localhost;Database=test;User ID=postgres;Password=fun2db" + (or) +"host=localhost;dbname=test;user=postgres;password=fun2db" </pre> </ul> @@ -179,9 +203,15 @@ create user postgres with password 'fun2db'; * <p>Important notes from this file are: <ul> - <p><b>2.</b> - Install the latest <a href="http://www.neuro.gatech.edu/users/cwilson/cygutils/OBSOLETE/V1.1/cygipc/index.html">CygIPC</a> package. + <p><b>2.</b> - Install the latest <a href="http://www.neuro.gatech.edu/users/cwilson/cygutils/cygipc/index.html">CygIPC</a> package. + Cygwin includes a utility bunzip2 which can be used to unzip it. Now, change to + the root directory by + typing "cd /" then + you can use "tar xvf cygipc.xxx.tar" to untar it + in the root directory in cygwin. - <p>The cygipc package contains the ipc-daemon you will need + <p>The cygipc package contains the support to run ipc-daemon + that you will need to run before you can run the PostgreSQL DBMS Server daemon (postmaster) or run initdb which initializes the PostgreSQL database. @@ -267,34 +297,9 @@ create user postgres with password 'fun2db'; </ul> <p>In the path mcs/class/System.Data/Test - there is a PostgreSQL test program named + there is a test for Mono.Data.PostgreSqlClient named PostgreTest.cs. Thanks goes to Gonzalo for creating the original PostgreSQL test. - - <p>To use it to test System.Data, you - modify the file to your PostgreSQL database - connection requirements: - - <p> - <ul> - <li><b>dbname</b> database, ie., test</li> - <li><b>host</b> hostname of the PostgreSQL DBMS Server, ie., localhost</li> - <li><b>user</b> username, ie., someuser</li> - <li><b>password</b> password, ie., mypass1234</li> - </ul> - - <p>The connection string is in OLE-DB connection string format. Internally, - SqlConnection converts this to the PostgreSQL connection string format. - - <p> -<pre> - OLE-DB: "host=localhost;dbname=test;user=joe;password=smoe" -PostgreSQL: "host=localhost dbname=test user=joe password=smoe" -</pre> - - <p> - Note that OLE-DB includes the semicolons while PostgreSQL's connection - string does not. <p> To compile the PostgresTest.cs program, do: @@ -310,7 +315,7 @@ PostgreSQL: "host=localhost dbname=test user=joe password=smoe" to PgSqlConnection, then you need to run mcs like: <pre> - mono f:/cygwin/home/DanielMorgan/mono/install/bin/mcs.exe \ + mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \ PostgresTest.cs \ -r System.Data.dll \ -r Mono.Data.PostgreSqlClient.dll @@ -328,185 +333,160 @@ mint PostgresTest.exe To run using mono, do: <pre> mono PostgresTest.exe -</pre> - - <p>Below, I show how the output from PostgresTest. I have omitted a lot - of the meta data for the columns except two columns. The classes - used were from Mono.Data.PostgreSqlClient and were used to connect to a - PostgreSQL database and retrieve data. - -<p> -<pre> - - danmorg@DANPC ~/mono/mcs/class/System.Data/Test - $ mcs PostgresTest.cs -r System.Data.dll - - danmorg@DANPC ~/mono/mcs/class/System.Data/Test - $ mono PostgresTest.exe - Postgres provider specific tests... - - Drop table: - Error (don't worry about this one)SqlError:PGRES_FATAL_ERROR ERROR: - table "mono_postgres_test" does not exist - <Stack Trace> - - Create table with all supported types: - OK - Insert values for all known types: - OK - Update values: - OK - Insert values for all known types: - OK - Aggregate: count(*) - Agg Result: 2 - Aggregate: min(text_value) - Agg Result: This is a text - Aggregate: max(int4_value) - Agg Result: 1048000 - Aggregate: sum(int4_value) - Agg Result: 1048003 - Select values from the database: - Result is from a SELECT SQL Query. Records Affected: -1 - Result Set 1... - Total Columns: 28 - ColumnName = boolean_value - ColumnOrdinal = 1 - ColumnSize = 1 - NumericPrecision = 0 - NumericScale = 0 - IsUnique = False - IsKey = - BaseCatalogName = - BaseColumnName = boolean_value - BaseSchemaName = - BaseTableName = - DataType = System.Boolean - AllowDBNull = False - ProviderType = 16 - IsAliased = False - IsExpression = False - IsIdentity = False - IsAutoIncrement = False - IsRowVersion = False - IsHidden = False - IsLong = False - IsReadOnly = False - - ... - - ColumnName = null_timestamp_value - ColumnOrdinal = 28 - ColumnSize = 8 - NumericPrecision = 0 - NumericScale = 0 - IsUnique = False - IsKey = - BaseCatalogName = - BaseColumnName = null_timestamp_value - BaseSchemaName = - BaseTableName = - DataType = System.DateTime - AllowDBNull = False - ProviderType = 1184 - IsAliased = False - IsExpression = False - IsIdentity = False - IsAutoIncrement = False - IsRowVersion = False - IsHidden = False - IsLong = False - IsReadOnly = False - - Gonna do a Read() now... - Row 0: - Col 0: boolean_value: False - Col 1: int2_value: 5 - Col 2: int4_value: 3 - Col 3: bigint_value: 9 - Col 4: float_value: 3.141590 - Col 5: double_value: 3.14159 - Col 6: numeric_value: 123456789012.345 - Col 7: char_value: Mono.Data! - Col 8: varchar_value: It was not me! - Col 9: text_value: We got data! - Col 10: point_value: (1,0) - Col 11: time_value: 01/01/1 21:13:14 - Col 12: date_value: 02/29/2000 00:00:00 - Col 13: timestamp_value: 02/29/2004 14:00:11 - Col 14: null_boolean_value is NULL - Col 15: null_int2_value is NULL - Col 16: null_int4_value is NULL - Col 17: null_bigint_value is NULL - Col 18: null_float_value is NULL - Col 19: null_double_value is NULL - Col 20: null_numeric_value is NULL - Col 21: null_char_value is NULL - Col 22: null_varchar_value is NULL - Col 23: null_text_value is NULL - Col 24: null_point_value is NULL - Col 25: null_time_value is NULL - Col 26: null_date_value is NULL - Col 27: null_timestamp_value is NULL - Row 1: - Col 0: boolean_value: True - Col 1: int2_value: -22 - Col 2: int4_value: 1048000 - Col 3: bigint_value: 123456789012345 - Col 4: float_value: 3.141590 - Col 5: double_value: 3.14159 - Col 6: numeric_value: 123456789012.345 - Col 7: char_value: This is a char - Col 8: varchar_value: This is a varchar - Col 9: text_value: This is a text - Col 10: point_value: (1,0) - Col 11: time_value: 01/01/1 21:13:14 - Col 12: date_value: 02/29/2000 00:00:00 - Col 13: timestamp_value: 02/29/2004 14:00:11 - Col 14: null_boolean_value is NULL - Col 15: null_int2_value is NULL - Col 16: null_int4_value is NULL - Col 17: null_bigint_value is NULL - Col 18: null_float_value is NULL - Col 19: null_double_value is NULL - Col 20: null_numeric_value is NULL - Col 21: null_char_value is NULL - Col 22: null_varchar_value is NULL - Col 23: null_text_value is NULL - Col 24: null_point_value is NULL - Col 25: null_time_value is NULL - Col 26: null_date_value is NULL - Col 27: null_timestamp_value is NULL - Total Rows Retrieved: 2 - Total Result sets: 1 - Call ExecuteReader with a SQL Command. - (Not INSERT,UPDATE,DELETE - ). - Result is from a SQL Command not (INSERT,UPDATE,DELETE). - Records Affected: -1 - Total Result sets: 0 - Call ExecuteReader with a SQL Command. - (Is INSERT,UPDATE,DELETE) - . - Result is from a SQL Command (INSERT,UPDATE,DELETE). Records Affected: 1 - Total Result sets: 0 - Calling stored procedure version() - Result: PostgreSQL 7.2.1 on i686-pc-cygwin, compiled by GCC 2.95.3-5 - Database Server Version: PostgreSQL 7.2.1 on i686-pc-cygwin, - compiled by GCC 2.9 - 5.3-5 - Clean up... - Drop table... - OK - RESULT: 0 +</pre> + <p>C# Example for Mono.Data.PostgreSqlClient: +<pre> + using System; + using System.Data; + using Mono.Data.PostgreSqlClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=postgres;" + + "Password=fun2db;"; + IDbConnection dbcon; + dbcon = new PgConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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.PostgreSqlClient.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.PostgreSqlClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe </pre> +</li> +</ul> -* Action Plan +** Testing Npgsql - <p>Eventually replace the PostgreSQL data provider in Mono - with <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>. - Npgsql is a .Net Data Provider for PostgreSQL which implements - the <a href="http://developer.postgresql.org/docs/postgres/protocol.html">PostgreSQL Frontend/Backend Protocol</a>. - Npgsql is implemented in 100% C#. This provider was created by Francisco Figueiredo jr. - and has many programmers developing the provider. +<ul> + <li>Have a working mono and mcs</li> + + <li>Get <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> + and make sure the binary assembly Npgsql.dll is installed in the same place that the + mono class libraries are located. + + <li>Read the Testing notes for Mono.Data.PostgreSqlClient too + + <li>C# Example for Npgsql: +<pre> + using System; + using System.Data; + using Npgsql; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=postgres;" + + "Password=fun2db;"; + IDbConnection dbcon; + dbcon = new NpgsqlConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 Npgsql.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 Npgsql.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> +</li> +</ul> + diff --git a/doc/sqlclient b/doc/sqlclient index f73ba3eb4f4..df76f9d620a 100755 --- a/doc/sqlclient +++ b/doc/sqlclient @@ -1,58 +1,147 @@ * Microsoft SQL Server Provider <ul> - <li>ADO.NET Provider for Microsoft SQL Server 7/2000 databases + <li>ADO.NET Provider for Microsoft SQL Server 7/2000 databases</li> - <li>Exists in namespace System.Data.SqlClient and assembly System.Data + <li>Exists in namespace System.Data.SqlClient and assembly System.Data</li> - <li>Created by Tim Coleman + <li>Created by Tim Coleman</li> <li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and - <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources. + <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li> - <li>Implemented in 100% C# + <li>Implemented in 100% C#</li> - <li>Is similar to the Mono.Data.TdsClient and Mono.Data.SybaseClient providers. + <li>Is similar to the Mono.Data.TdsClient and Mono.Data.SybaseClient providers.</li> + + <li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li> + + <li>Uses TDS Protocol Version 7.0</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status - + +** Current Status + + <ul> - <li>Able to connect to Microsoft SQL Server 7/2000 databases + <li>Able to connect to Microsoft SQL Server 7/2000 databases</li> - <li>Connection pooling works. + <li>Connection pooling works.</li> - <li>Stored Procedures work + <li>Stored Procedures work</li> - <li>Parameters work. + <li>Parameters work.</li> - <li>Prepare works. + <li>Prepare works.</li> <li>SQL commands can be executed - via ExecuteNonQuery() of a SqlCommand. + via ExecuteNonQuery() of a SqlCommand.</li> <li>SQL aggregates can be executed and a single row and single column - result can be retrieved via ExecuteScalar() of a SqlCommand + result can be retrieved via ExecuteScalar() of a SqlCommand</li> <li>SQL queries can be executed via ExecuteReader() and results - can be retrieved via SqlDataReader. + can be retrieved via SqlDataReader.</li> <li>a DataTable with schema info about a result can be gotten via GetSchemaTable() - in a SqlDataReader + in a SqlDataReader</li> - <li>XML can be read via ExecuteXmlReader in a SqlCommand. + <li>XML can be read via ExecuteXmlReader in a SqlCommand.</li> - <li>Data can be filled in a DataTable in a DataSet via a SqlDataAdapter + <li>Data can be filled in a DataTable in a DataSet via a SqlDataAdapter</li> - <li>Uses TDS Protocol Version 7.0 + <li>Uses TDS Protocol Version 7.0</li> - <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a> + <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a></li> </ul> -* Action plan +** Action plan <ul> <li>Connection timeouts is being developed now. - <li>TODO + <li>Needs more testing... + </ul> + +** Testing + +<ul> + <li>Have a working mono and mcs installed</li> + + <li>Have access to a Microsoft SQL Server database + or either download it: + <ul> + <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a></li> + </ul> + </li> + + <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient + named SqlTest.cs and you could use this as a basis for your test.</li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using System.Data.SqlClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=pubs;" + + "User ID=sa;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new SqlConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "SELECT fname, lname " + + "FROM employee"; + dbcmd.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["fname"]; + string LastName = reader["lname"]; + 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 +</pre> + </li> + <li>Build on Windows via Cygwin: +<pre> + mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \ + TestExample.cs -r System.Data.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/doc/sqlite b/doc/sqlite index 07312db51b6..85b35c997aa 100755 --- a/doc/sqlite +++ b/doc/sqlite @@ -1,28 +1,112 @@ * SQL Lite Data Provider <ul> - <li>Exists in namespace and assembly Mono.Data.SqliteClient + <li>Exists in namespace and assembly Mono.Data.SqliteClient</li> - <li>Created by Vladimir Vukicevic + <li>Created by Vladimir Vukicevic</li> <li><a href"http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a> binaries exist for Linux and Windows. sqlite.dll on Windows - and sqlite.so on Linux. + and sqlite.so on Linux.</li> </ul> -* Current Status +** Current Status <ul> - <li>Able to connect, execute commands, and retrieve data... + <li>Able to connect, execute commands, and retrieve data...</li> - <li>Works in mPhoto + <li>Works in mPhoto by providing access to a SQL Lite database to store images.</li> </ul> -* Action Plan +** Action Plan <ul> <li>Create a DataAdapter for SQL Lite named SqliteDataAdapter that can be used to - Fill a DataTable in a DataSet + Fill a DataTable in a DataSet</li> - <li>TODO + <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 MySQLConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader[0]; + string LastName = 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> + diff --git a/doc/sybase b/doc/sybase index 6a165fab98c..6a3b859c5b1 100755 --- a/doc/sybase +++ b/doc/sybase @@ -1,48 +1,134 @@ * Sybase Data Provider <ul> - <li>ADO.NET Provider for Sybase SQL Server databases + <li>ADO.NET Provider for Sybase SQL Server databases</li> - <li>Exists in namespace Mono.Data.SybaseClient and assembly Mono.Data.SybaseClient + <li>Exists in namespace Mono.Data.SybaseClient and assembly Mono.Data.SybaseClient</li> - <li>Created by Tim Coleman + <li>Created by Tim Coleman</li> <li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and - <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources. + <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li> - <li>Implemented in 100% C# + <li>Implemented in 100% C#</li> - <li>Is similar to the Mono.Data.TdsClient and System.Data.SqlClient providers. + <li>Is similar to the Mono.Data.TdsClient and System.Data.SqlClient providers.</li> - <li>Uses TDS Protocol Version 5.0 + <li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li> - <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a> + <li>Uses TDS Protocol Version 5.0</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> - <li>Able to connect to Sybase databases + <li>Able to connect to Sybase databases</li> <li>SQL commands can be executed - via ExecuteNonQuery() of a SybaseCommand. + via ExecuteNonQuery() of a SybaseCommand.</li> <li>SQL aggregates can be executed and a single row and single column - result can be retrieved via ExecuteScalar() of a SybaseCommand + result can be retrieved via ExecuteScalar() of a SybaseCommand</li> <li>SQL queries can be executed via ExecuteReader() and results - can be retrieved via SybaseDataReader. + can be retrieved via SybaseDataReader.</li> <li>a DataTable with schema info about a result can be gotten via GetSchemaTable() - in a SybaseDataReader + in a SybaseDataReader</li> - <li>Data can be filled in a DataTable in a DataSet via a SybaseDataAdapter + <li>Data can be filled in a DataTable in a DataSet via a SybaseDataAdapter</li> </ul> -* Action plan +** Action plan <ul> <li>Connection timeouts is being developed now. + + <li>Needs more testing... - <li>TODO </ul> + +** Testing + +<ul> + <li>Have a working mono and mcs installed</li> + + <li>Have access to a Sybase database + or either download it: + <ul> + <li><a href="http://www.sybase.com/downloads">Sybase</a></li> + </ul> + </li> + + <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient + named SqlTest.cs and you could use this as a basis for your test.</li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.SybaseClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=pubs;" + + "User ID=sa;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new SybaseConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "SELECT fname, lname " + + "FROM employee"; + dbcmd.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["fname"]; + string LastName = reader["lname"]; + 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.SybaseClient.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.SybaseClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/doc/tdsclient b/doc/tdsclient index c6fcafb842c..c5f494a7c66 100755 --- a/doc/tdsclient +++ b/doc/tdsclient @@ -1,51 +1,137 @@ * TDS Generic Provider <ul> - <li>ADO.NET Provider for older Sybase and Microsoft SQL Server databases + <li>ADO.NET Provider for older Sybase and Microsoft SQL Server databases</li> - <li>Exists in namespace Mono.Data.TdsClient and assembly Mono.Data.TdsClient + <li>Exists in namespace Mono.Data.TdsClient and assembly Mono.Data.TdsClient</li> - <li>Created by Tim Coleman + <li>Created by Tim Coleman</li> <li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and - <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources. + <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li> - <li>Implemented in 100% C# + <li>Implemented in 100% C#</li> - <li>Is similar to the Mono.Data.SybaseClient and System.Data.SqlClient providers. + <li>Is similar to the Mono.Data.SybaseClient and System.Data.SqlClient providers.</li> - <li>Uses TDS Protocol Version 4.2 by default + <li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li> - <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a> + <li>Uses TDS Protocol Version 4.2 by default</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status + <ul> <li>Only builds on Windows currently due to mcs does not support modules and mcs - has problems with code that is internal. + has problems with code that is internal.</li> - <li>Able to connect to Microsoft SQL Server and Sybase databases + <li>Able to connect to Microsoft SQL Server and Sybase databases</li> <li>SQL commands can be executed - via ExecuteNonQuery() of a TdsCommand. + via ExecuteNonQuery() of a TdsCommand.</li> <li>SQL aggregates can be executed and a single row and single column - result can be retrieved via ExecuteScalar() of a TdsCommand + result can be retrieved via ExecuteScalar() of a TdsCommand</li> <li>SQL queries can be executed via ExecuteReader() and results - can be retrieved via TdsDataReader. + can be retrieved via TdsDataReader.</li> <li>a DataTable with schema info about a result can be gotten via GetSchemaTable() - in a TdsDataReader + in a TdsDataReader</li> - <li>Data can be filled in a DataTable in a DataSet via a TdsDataAdapter + <li>Data can be filled in a DataTable in a DataSet via a TdsDataAdapter</li> </ul> -* Action plan +** Action plan <ul> - <li>Connection timeouts is being developed now. + <li>Connection timeouts is being developed now.</li> + + <li>TODO</li> +</ul> + +** Testing - <li>TODO +<ul> + <li>Have a working mono and mcs installed</li> + + <li>Have access to a Sybase or Microsoft SQL Server database + or either download it: + <ul> + <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a></li> + <li><a href="http://www.sybase.com/downloads">Sybase</a></li> + </ul> + </li> + + <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient + named SqlTest.cs and you could use this as a basis for your test.</li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.TdsClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=pubs;" + + "User ID=sa;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new TdsConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "SELECT fname, lname " + + "FROM employee"; + dbcmd.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["fname"]; + string LastName = reader["lname"]; + 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.TdsClient.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.TdsClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> </ul> + diff --git a/doc/web/commands b/doc/web/commands index dabbfacbe97..23a49c4bca7 100644 --- a/doc/web/commands +++ b/doc/web/commands @@ -34,6 +34,7 @@ 0,Plans,plans.html,plans.src 1,ADO.NET,ado-net.html,ado-net.src 2,Firebird Interbase,firebird.html,firebird.src +2,IBM DB2,ibmdb2.html,ibmdb2.src 2,Microsft SQL Server,sqlclient.html,sqlclient.src 2,MySQL,mysql.html,mysql.src 2,ODBC,odbc.html,odbc.src diff --git a/doc/web/makefile b/doc/web/makefile index 4fd3acb4947..5a037d1cc16 100644 --- a/doc/web/makefile +++ b/doc/web/makefile @@ -6,6 +6,7 @@ CORCOMPARE=../../../mcs/tools/corcompare OBJECTS= \ deploy/ado-net.html \ deploy/firebird.html \ + deploy/ibmdb2.html \ deploy/mysql.html \ deploy/odbc.html \ deploy/oledb.html \ diff --git a/man/sqlsharp.1 b/man/sqlsharp.1 index 5353280fdfb..7ddfea6f583 100755 --- a/man/sqlsharp.1 +++ b/man/sqlsharp.1 @@ -342,16 +342,28 @@ ption defaulting to true. .SH PROVIDERS .nf -PROVIDER NAME NAMESPACE ASSEMBLY - -OleDb OLE DB System.Data.OleDb System.Data -SqlClient MS SQL 7/2000 System.Data.SqlClient System.Data -Odbc ODBC System.Data.Odbc System.Data -MySql MySQL Mono.Data.MySql Mono.Data.MySql -Sqlite SQL Lite Mono.Data.SqliteClient Mono.Data.SqliteClient -Sybase Sybase Mono.Data.SybaseClient Mono.Data.SybaseClient -Tds TDS Generic Mono.Data.TdsClient Mono.Data.TdsClient -PostgreSql PostgreSQL Mono.Data.PostgreSqlClient Mono.Data.PostgreSqlClient +PROVIDER NAME NAMESPACE ASSEMBLY + +Internal +-------- + +OleDb OLE DB System.Data.OleDb System.Data +SqlClient MS SQL 7/2000 System.Data.SqlClient System.Data +Odbc ODBC System.Data.Odbc System.Data + +External to System.Data +---------------------- +MySql MySQL Mono.Data.MySql Mono.Data.MySql +Sqlite SQL Lite Mono.Data.SqliteClient Mono.Data.SqliteClient +Sybase Sybase Mono.Data.SybaseClient Mono.Data.SybaseClient +Tds TDS Generic Mono.Data.TdsClient Mono.Data.TdsClient +PostgreSql MonoPostgreSQL Mono.Data.PostgreSqlClient Mono.Data.PostgreSqlClient + +External to Mono +---------------- + +Npgsql PostgreSQL.NET Npgsql Npgsql +MySQLNet ByteFX MySQL ByteFX.Data.MySQL ByteFX.Data .fi .SH CONNECTION STRING SAMPLES diff --git a/web/ado-net b/web/ado-net index 27e8fd09f03..0f40c246db8 100644 --- a/web/ado-net +++ b/web/ado-net @@ -1,39 +1,51 @@ * ADO.NET - The coordinator for the ADO.NET implementation is - <a href="mailto:rodrigo@ximian.com">Rodrigo Moya</a>, - with the collaboration of: - <a href="mailto:danmorg@sc.rr.com">Daniel Morgan</a>, - <a href="mailto:tim@timcoleman.com">Tim Coleman</a>, - <a href="mailto:brianlritchie@hotmail.com">Brian Ritchie</a>, and - <a href="mailto:vladimir@pobox.com">Vladimir Vukicevic</a>. + <p>Mono's ADO.NET Developers: + <ul> + <li>rodrigo -AT- ximian.comNOSPAM - <b>Rodrigo Moya</b> - coordinator + for the ADO.NET implementation and works on the OLE DB provider</li> + <li>danmorg -AT- sc.rr.comNOSPAM - <b>Daniel Morgan</b> - works on + the MySQL, PostgreSQL, and Oracle providers</li> + <li>tim -AT- timcoleman.comNOSPAM - <b>Tim Coleman</b> - works on + the Microsoft SQL Server, Sybase, and TDS providers</li> + <li>brianlritchie -AT- hotmail.comNOSPAM - <b>Brian Ritchie</b> - works on + the ODBC provider and the ProviderFactory</li> + <li>vladimir -AT- pobox.comNOSPAM - <b>Vladimir Vukicevic</b> - works on + the SQL Lite provider</li> + <li>cleared -AT- rogers.comNOSPAM - <b>Christopher Bockner</b> - works on + the IBM DB2 provider</li> + <li>vi64pa -AT- koti.soon.fiNOSPAM - <b>Ville Palo</b> - works on XML stuff in System.Data + including DataSet, XmlDataDocument, and has done lots of testing</li> + </ul> - * Action plan <p>The current plan to implement ADO.NET is as follows: <ul> <li>Either create ADO.NET providers or modify pre-exiting ADO.NET providers to - work with Mono + work with Mono</li> <ul> <li>Create ADO.NET Providers <ul> - <li><a href="http://www.go-mono.com/mysql.html">MySQL</a> - <li><a href="http://www.go-mono.com/odbc.html">ODBC</a> - <li><a href="http://www.go-mono.com/oracle.html">Oracle</a> - <li><a href="http://www.go-mono.com/oledb.html">OLE DB</a> - <li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a> - <li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a> - <li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a> - <li><a href="http://www.go-mono.com/sybase.html">Sybase</a> - <li><a href="http://www.go-mono.com/tdsclient.html">TDS Generic</a> + <li><a href="http://www.go-mono.com/ibmdb2.html">IBM DB2 Universal Database</a></li> + <li><a href="http://www.go-mono.com/mysql.html">MySQL</a></li> + <li><a href="http://www.go-mono.com/odbc.html">ODBC</a></li> + <li><a href="http://www.go-mono.com/oracle.html">Oracle</a></li> + <li><a href="http://www.go-mono.com/oledb.html">OLE DB</a></li> + <li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a></li> + <li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a></li> + <li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a></li> + <li><a href="http://www.go-mono.com/sybase.html">Sybase</a></li> + <li><a href="http://www.go-mono.com/tdsclient.html">TDS Generic</a></li> <li>Providers which we do not have, but we would like to have. Currently, - some of these databases are supported via the ODBC or OLEDB providers. + some of these databases are supported via the ODBC or OLEDB providers.</li> <ul> - <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> + <li><a href="http://msdn.microsoft.com/library/en-us/dnsql2k/html/sqlxml_intromanagedclasses.asp?frame=true">Managed Classes for SqlXml</a> which is + a .NET data provider for retrieving XML data from a Microsoft SQL Server 2000 database. The System.Data.SqlClient provider + in Mono can be used as a starting point at mcs/class/System.Data/System.Data.SqlClient.</li> <li><a href="http://www.hughes.com.au/">miniSQL</a></li> <li><a href="http://www.sleepycat.com/">BerkeleyDB (Sleepycat)</a></li> <li><a href="http://www.sapdb.org/">SapDB</a></li> @@ -41,18 +53,18 @@ <li>dbase or xbase type database files</li> <li>Others are welcome</li> </ul> - </ul> + </ul></li> <br> <li>Modify Pre-existing ADO.NET Providers to work with Mono. This may require fixing or implementing areas of Mono too. <ul> <li><a href="http://www.go-mono.com/firebird.html">Firebird Interbase</a></li> - <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a PostgreSQL Managed data provider written - in 100% C# and does not require a client library </li> - <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a MySQL Manager data provider written in 100% C# and does not - require a client library</li> - <li><a href="http://sourceforge.net/projects/mysqldrivercs/">MySQLDriverCS</a> is a MySQL data provider written in C#</li> - + <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a + PostgreSQL Managed data provider written + in 100% C#, does not require a client library, and works on Mono</li> + <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a + MySQL Manager data provider written in 100% C#, does not + require a client library, and works on Mono</li> </ul> </li> </ul> @@ -64,13 +76,16 @@ test connection strings, and connect to various ADO.NET providers in Mono. The SQL# CLI can be found in mcs/tools/SqlSharp/SqlSharpCli.cs</li> + <li><p><b>SQL# GUI - a GUI tool</b> written in C# to execute SQL commands. Currently, there is SQL# For GTK# which can be found at mcs/tools/SqlSharp/gui/gtk-sharp It has a SQL editor with - syntax hi lighting of SQL keywords</li> + syntax hi lighting of SQL keywords. This will be + moving to its own cvs modeul sqlsharpgtk.</li> + <li><b>Configuration Command-Line and GUI Tools for ADO.NET</b>. These tools have not been started. The tools would be written in C# and run on Mono. The @@ -93,6 +108,10 @@ <p>Variouls ADO.NET Providers have been created: PostgreSQL, MySQL, Sybase, SQL Lite, Microsoft SQL Server, OLE DB, ODBC, and TDS Generic. See their respective web page for more information. + + <p>Constraints need lots of work + + <p>TypeDataSetGenerator needs to be stubbed and implemented. <p><b>DataSet, DataAdaptor, DataTable, DataRelation, DataRow, DataColumn, DataColumnCollection, DataRowCollection, and others</b> need more work. There are @@ -102,19 +121,56 @@ the classes: DataSet, XmlDataDocument, and the method ExecuteXmlReader() that exists in a provider's class that implements IDbCommand, and others. Stuart Caborn has started the XML support in a DataSet. Tim Coleman started - XML support in the ExecuteXmlReader() in a SqlCommand. + XML support in the ExecuteXmlReader() in a SqlCommand. Ville Palo has been + heavily modifying DataSet, XmlDataDocument, and other classes for reading + and writing XML. <p><b>ADO.NET Provider Factory</b> has been started by Brian Ritchie. The - Provider Factory is used to dynamically create - connections, commands, parameters, and data adapters based on configuration information. This - provider factory can also provide utility functions needed by a lot of - providers but are not exposed via the provider. + Provider Factory is way to dynamically create + connections, commands, parameters, and data adapters based on configuration information. The + provider factory also provides utility functions needed by a lot of + providers but are not exposed via the provider. The ProviderFactory + is found at mcs/class/Mono.Data and includes a test named test.cs for it in + mcs/class/Mono.Data/Test. Also, take a look at the sample .config file for the + test.exe application named test.exe.config. The .config file is automatically + read when you use the Mono.Data.ProviderFactory or Mono.Data.DataTools. <p><b>Integration with ASP.NET</b> has not been started, such as, data binding to a System.Web.UI.WebControls.DataGrid. This may involve implementing many classes - in System.Web and System.Data. Gonzalo, Gaurav, Leen, Patrik, Duncan, and others are - working very hard on the ASP.NET support. If you want to help, - contact <a href="mailto:gonzalo@ximian.com">Gonzalo Paniagua Javier</a> + in System.Web and System.Data. If you want to help, + contact Gonzalo Paniagua Javier. Here is information about using ADO.NET in ASP.NET: + <ul> + <li>Take a look at xsp in cvs and look at the examples in test: dbpage1.aspx + and dbpage2.aspx: + <ul> + <li>Notice that the namespace System.Data is imported via <b>import</b></li> + <li>A NameValueCollection is gotten using ConfigurationSettings.AppSetings. These + settings are gotten from the file server.exe.config which is a XML file. The XML + file has a section appSettings. In the appSettings section, you have keys + for DBProviderAssembly, DBConnectionType, and DBConnectionString. + <ul> + <li><b>DBProviderAssembly</b> is the assembly of the ADO.NET provider. + For example: + "Mono.Data.PostgreSqlClient"</li> + <li><b>DBConnectionType</b> is the System.Type of the class that + implements System.Data.IDbConnection that is found + in the DBProviderAssembly. + For example: + "Mono.Data.PostgreSqlClient.PgConnection"</li> + <li><b>DBConnectionString</b> is the ConnectionString to set to the + IDbConnection object to use in opening a connection to a data source. + For Example: + "hostaddr=127.0.0.1;user=monotest;password=monotest;dbname=monotest"</li> + </ul> + <li>The function GetConnectionData() gets the database provider assembly, connection type, + and connection string parameters if they exist; otherwise, it uses default values. This is + done during the loading of the web page.</li> + <li>With the connection parameters, the assembly is loaded, the connection type is verified that + it implements IDbConnection and an instance of the class can be created, creates a instance + of the class, sets the connection string, and opens the connection.</li> + </ul> + </li> + </ul> <p><b>Integration with Windows.Forms</b> has not been started, such as, data binding to a System.Windows.Forms.DataGrid. This may involve implementing many classes @@ -130,27 +186,6 @@ how this can be done is appreciated. Adam Treat would be the best person to ask about QT#. - <p><b>Integration with GDA#</b> has not been started. It is - included in the GTK# project, GDA# - does not require GTK+ nor GNOME. GDA# is C# bindings - to <a href="http://www.gnome-db.org/">GDA</a> which - is an ADO/OLE-DB like layer for Linux provided as a C library. Classes - that would bind data between the ADO.NET data model and the GDA data model will - need to be created. Rodrigo Moya is the best person to contact about this. - - <p><b>Integration with GnomeDb#</b> has not been started. It is - included in the GTK# project and uses GDA# for its data access model. - Creating classes to bind data between the data model in ADO.NET - and the data model that exists in GDA# and GnomeDb# will - need to be started. GnomeDb# is C# bindings to - <a href="http://www.gnome-db.org/">GnomeDb</a> which uses - <a href="http://www.gnome-db.org/">GDA</a> as its data access layer. GnomeDb - is a C API in a library that contains - gtk+ widgets (GUI controls) for data access. There are some nifty widgets - (GUI controls) that can be used, such as, GnomeDbGrid, GnomeDbBrowswer, - GnomeDbSqlEditor, GnomeDbList, GnomeDbLogin, GnomeDbReportEditor, GnomeDbTableEditor, - GnomeDbCombo, and GnomeDbForm. Rodrigo Moya is the best person to contact. - <p><b>Building System.Data</b> <p>The System.Data.dll gets built with the rest of the class library. @@ -194,3 +229,12 @@ </pre> </ul> +* Testing + +<ul> + <li>Testing connection-oriented classes are done via the provider specific tests + + <li><a href="http://www.go-mono.com/testing.html">Testing non-connection classes</a> are + done via mono's modified version of NUnit.</li> + +</ul> diff --git a/web/firebird b/web/firebird index 066da551f58..8e1f73ef126 100755 --- a/web/firebird +++ b/web/firebird @@ -8,7 +8,7 @@ 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/firebird">here</a></li> + downloaded from <a href="http://sourceforge.net/projects/firebird/">here</a></li> <li>The Firebird .NET Data provider has been made available by Carlos Guzmán Álvarez (aka "Carlos G.A."), who has also made a @@ -16,7 +16,7 @@ </ul> -* Current Status +** Current Status <ul> <li>Currently, it is able to connect to Firebird and Interbase databases @@ -56,7 +56,7 @@ </ul> -* Action Plan +** Action Plan <ul> <li>Bug fixing</li>
@@ -98,3 +98,78 @@ </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>C# Example for Mono's System.Data.OleDb: +<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); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = "SELECT * FROM employee"; + dbcmd.ConnectionString = 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> + diff --git a/web/gtk-sharp b/web/gtk-sharp index dc075765c2a..1f286e59c52 100644 --- a/web/gtk-sharp +++ b/web/gtk-sharp @@ -3,19 +3,145 @@ <a href="http://gtk-sharp.sourceforge.net">Gtk#</a> (Gtk sharp) is a set of C# language bindings for the <a href="http://www.gtk.org">Gtk+</a> toolkit and other - libraries that are part of the <a - href="http://www.gnome.org">GNOME</a> platform . + libraries that are part of the + <a href="http://www.gnome.org">GNOME</a> platform . ** API of Gtk# The API is browsable - <a - href="http://primates.ximian.com/~tvgm/gtk-sharp-docs/">here</a> + <a href="http://primates.ximian.com/~tvgm/gtk-sharp-docs/">here</a> ** Where to learn more. - Visit the official site for the <a - href="http://gtk-sharp.sourceforge.net">Gtk# Project</a>. + Visit the official site for the <a href="http://gtk-sharp.sourceforge.net">Gtk# Project</a>. The <a href="http://www.go-mono.org/faq">Mono FAQ</a> has some useful information too. + +** GTK# On Linux +<p>Where to get distributions of GTK# for Linux: TODO + +<p>Buidling on Linux: + +<ul> + <li>Get GTK# source from <a href="http://gtk-sharp.sourceforge.net">Gtk# Project</a>.</li> + <li>run ./autogen.sh --prefix=my_mono_installation_prefix</li> + <li>make</li> + <li>make install</li> +</ul> + +** GTK# On Windows + +<p>There is a Windows Installer for GTK# <a href="http://www.sport-huettn.de/mono/gtk-sharp-0.6-stable-2.exe">here</a>.
+ +<p>If you want to build GTK# yourself on Windows:
+
+<p>To build gtk# under windows, you will need the following:
+
+<ul>
+ <li>cygwin from <a href="http://www.cygwin.com/">here</a> When installing Cygwin via setup.exe,
+ by default binutils and other tools do not get installed; you have to make
+ sure to select these items. Just make
+ sure Base and Development are set to Install.</li>
+ <li>Mono 0.17 or later from <a href="http://www.go-mono.com/download.html">here</a>
+ You can use Windows Setup Wizard (NT/2000/XP).</li>
+ <li>GTK+ 2.0 (and dependencies). You can obtain gtk+ 2.0 by either of the
+following:
+ <ul>
+ <li>You can get a Windows Installer at:
+ <a href="http://www.dropline.net/jade/download.html">here</a> </li>
+ <li>or get the separate binary and dev/lib packages at
+ at <a href="http://www.gimp.org/~tml/gimp/win32/downloads.html">here</a> </li>
+ <li>or binary package from Dev-C++ site <a href="http://www.bloodshed.net/dev/packages/gtk.html">here</a> </li>
+ <li>or get Gtk4Win <a href="http://wingtk.sourceforge.net/index.html">here</a> </li>
+ <li>or the source at <a href="http://www.gtk.org/">here</a> </li>
+ </ul>
+ </li>
+ <li>binary distriubtion of a current web browser
+ like Internet Explorer 4.0, Mozilla 1.0, or Netscape 7.0 which
+ includes things like msvcrt.dll.</li>
+ <li>Microsoft .NET Framework at
+ <a href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml&frame=true">here</a> </li>
+
+<p>If you are running Windows 95/98/ME, then you will need Unicode support.
+Look in
+mono-list archives for information about how to get
+Mono to work on Windows 9x.
+<a href="http://lists.ximian.com/archives/public/mono-list/2002-December/004158.html">here</a>
+
+<p>Environment Variables to set:
+<ul>
+<li>PATH - set to your mono installation bin and lib path.
+ For example, my mono installation prefix is:
+<pre>
+F:/cygwin/home/DanielMorgan/mono/install
+</pre>
+ <p>So, I would set my PATH in the Windows Control Panel as:
+<pre>
+F:/cygwin/home/DanielMorgan/mono/install/bin;F:/cygwin/home/DanielMorgan/mono/install/lib</li>
+</pre>
+</li>
+<li>LD_LIBRARY_PATH - set to your mono installation lib path</li>
+<li>PKG_CONFIG_PATH - set to your mono installation lib/pkgconfig path, such
+ as,
+<pre>
+ F:/cygwin/home/DanielMorgan/mono/install/lib/pkgconfig</li>
+</pre>
+
+ <p>If you got the gtk-sharp source, cd to the gtk-sharp directory, type:
+<pre>
+ ./autogen.sh --prefix=~/mono/install
+</pre>
+
+ <p>Set your --prefix= to whatever your mono installation prefix is located.
+ This will take awhile to go through the ./autogen.sh and ./configure...
+
+ <p>After that it finishes succesfully, you run make with the makefile.win32
+ like:
+<pre>
+ make -f makefile.win32
+</pre>
+
+ <p>After that finishes succesfully, you can copy to your mono installation lib
+ path like:
+<pre>
+ cp */*.dll ~/mono/install/lib
+</pre>
+</ul>
+
+<p>The pkg-config files for
+gtk+ 2.0 and dependencies will need to be set correctly if they haven't
+already been.
+
+<p>Look in your mono installation/lib/pkgconfig, such as,
+<pre>
+F:/cygwin/home/DanielMorgan/mono/install/lib/pkgconfig
+</pre>
+
+<p>You will find files like: gtk+-2.0.pc
+
+<p>Edit the line that says
+
+<pre>
+ prefix=something
+</pre>
+
+<p>And set it to your mono installation prefix, such as,
+
+<pre>
+ prefix=F:/cygwin/home/DanielMorgan/mono/install
+</pre>
+
+<p>Do this for all the .pc files in that directory. If there are not any, then
+you will need to create them. Or get them from somewhere like the dev
+packages at
+<a href="http://www.gimp.org/~tml/gimp/win32/downloads.html">here</a>
+
+
+** GTK# On Solaris
+
+ TODO
+
+** GTK# On AIX
+
+ TODO
diff --git a/web/ibmdb2 b/web/ibmdb2 new file mode 100755 index 00000000000..3c149563380 --- /dev/null +++ b/web/ibmdb2 @@ -0,0 +1,132 @@ +* IBM DB2 Data Provider +<ul> + <li>Exists in namespace DB2ClientCS and assembly Mono.Data.DB2Client</li> + + <li>The source code exists at mcs/class/Mono.Data.DB2Client</li> + + <li>Requires the Call Level Interface to IBM DB2 shared library. This + is db2cli.dll on Windows. The IBM DB2 CLI API is very similar to the ODBC API. If + you take a look at Mono's System.Data.Odbc ODBC provider, you will see the + DllImport's have similiar function names.</li> + + <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> can be downloaded from IBM.</li> + + <li>IBM DB2 Provider created by Christopher Bockner.</li> +</ul> + +** Current Status + +<ul> + <li>Compiles on Windows and Linux. Works on Windows. Still needs to be tested on Linux.</li> + + <li>Able to connect to IBM DB2</li> + + <li>Able to execute DML, such as, CREATE TABLE via ExecuteNonQuery()</li> + +</ul> + +** Action Plan + +<ul> + <li>Still needs work to get it to retrieve data via ExecuteReader() and + use the data reader to read data.</li> + +</ul> + +** Testing + +In order to test. +<ul> + <li>Have working mono and mcs setup</li> + + <li>Have access to an IBM DB2 database. If you do not have access, download the + <a href="http://www-3.ibm.com/software/data/db2/">IBM DB2</a> software. There + are versions for Windows, Linux, AIX, and Sun Solaris.</li> + + <li>Make sure the assembly Mono.Data.DB2Client.dll was built and installed + where the other class libraries are installed.</li> + + <li>If you do not have the source to mcs, get the source from + <a href="http://www.go-mono.com/download">here</a></li> + + <li>In mcs/class/Mono.Data.DB2Client/Test/DBConnTest, you will find + a DBConnTest.cs.</li> + + <li>To build DBConnTest: + <ul> + <li>On Unix:</li> +<pre> +mcs DBConnTest.cs -r System.Data.dll -r Mono.Data.DB2Client.dll +</pre> + </li> + <li>On Windows via Cygwin: +<pre> +mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe DBConnTest.cs \ + -lib:C:/cygwin/home/MyHome/mono/install/lib \ + -r System.Data.dll -r Mono.Data.DB2Client.dll +</pre> + </li> + <li>To run it on mono: +<pre> +mono DBConnTest.exe database userid password +</pre> + </li> + </ul> + </li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.DB2Client; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "DSN=sample;UID=db2admin;PWD=mypass"; + IDbConnection dbcon = new DB2ClientConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "CREATE TABLE mono_db2_test1 ( " +
+ " testid varchar(2), " +
+ " testdesc varchar(16) " +
+ ")"; + dbcmd.ConnectionString = sql; + dbcmd.ExecuteNonQuery(); + 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.DB2Client.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.DB2Client.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/web/mysql b/web/mysql index b8c96d973d3..e45ea0bee0b 100755 --- a/web/mysql +++ b/web/mysql @@ -3,27 +3,32 @@ <ul> <li>MySQL Data Provider for <a href="http://www.mysql.com/">MySQL</a> databases. It is written in C# and uses - the MySQL C Client Library + the MySQL C Client Library</li> - <li>Exists in namespace Mono.Data.MySql and assembly Mono.Data.MySql + <li>Exists in namespace Mono.Data.MySql and assembly Mono.Data.MySql</li> <li>Works on Windows and Linux via the MySQL client shared library - (libmySQL.dll on Windows and libmysqlclient.so on Linux). + (libmySQL.dll on Windows and libmysqlclient.so on Linux).</li> - <li>Started by Daniel Morgan using C# Bindings to MySQL from Brad Meril. + <li>Started by Daniel Morgan using + <a href="http://www.cybercom.net/~zbrad/DotNet/MySql/">C# Bindings to MySQL</a> from <a href="mailto:zbrad@cybercom.net">Brad Merill</a> <li><a href="http://www.mysql.com/articles/dotnet/">Exploring MySQL in the Microsoft .NET Environment</a> is an article - by Mr. Venu who is a MySQL AB developer. + by Mr. Venu who is a MySQL AB developer.</li> - <li>Other projects which have created a .NET Data provider for MySQL in C# + <li>There is a good alternative to the provider in Mono: <ul> - <li><a href="http://sourceforge.net/projects/mysqldrivercs/">MySQLDriverCS</a> is a MySQL provider written in C# - <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a MySQL Manager provider written in C# + <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> from ByteFX + is a MySQL Managed provider written in 100% C#, + does not require a client library, and works on Microsoft .NET and Mono. You + need at least Mono 0.18 and MySQLNet 0.65 for it to work on Mono.</li> </ul> + </li> + <li>Testing for Mono's Mono.Data.MySql and ByteFX's ByteFX.Data.MySQLClient is below...</li> </ul> -* Current Status +** Current Status <ul> <li>can connect @@ -48,7 +53,7 @@ can be modified with a text editor. </ul> -* Action plan +** Action plan The current plan to work on the MySQL data provider: @@ -64,3 +69,202 @@ The current plan to work on the MySQL data provider: <li>Get the provider to work like other data providers </ul> + +** Testing for Mono's MySQL provider (Mono.Data.MySql) + +<ul> + <li>Have access to a MySQL database or download it from + <ul> + <li><a href="http://www.mysql.com/downloads/index.html">MySQL AB</a></li> + </ul> + </li> + + <li>Take a look at MySqlTest.cs in mcs/class/Mono.Data.MySql/Test</li> + + <li>Has a ConnectionString format: +<pre> + "Server=hostname;" + + "Database=database;" + + "User ID=username;" + + "Password=password" + (or) + "host=hostname;" + + "dbname=database;" + + "user=username;" + + "passwd=password" +</pre> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.MySql; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=mysql;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new MySqlConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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.MySql.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.MySql.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + +** Testing for MySQLNet provider (ByteFX.Data.MySQLClient) + +<ul> + <li>Have access to a MySQL database or download it from + <ul> + <li><a href="http://www.mysql.com/downloads/index.html">MySQL AB</a></li> + </ul> + </li> + + <li>MySQLNet can be gotten from <a href="http://sourceforge.net/projects/mysqlnet/">here</a> and the + binary assembly ByteFX.Data.dll needs to be installed + in the same place as the mono class libraries.</li> + + <li>MySQLNet requires <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp">SharpZipLib</a> which is + a Zip Library written in 100% C#. This is used for compression/decompression of data + sent/received over the network. The SharpZipLib binary assembly SharpZipLib.dll should + be installed in the same place as the mono class libraries.</li> + + <li>Has a ConnectionString format: +<pre> +"Server=hostname;" + +"Database=database;" + +"User ID=username;" + +"Password=password" +</pre> + </li> + <li>C# Example: +<pre> + using System; + using System.Data; + using ByteFX.Data.MySQLClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=mysql;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new MySQLConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 ByteFX.Data.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 ByteFX.Data.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + @@ -2,51 +2,174 @@ <ul> <li>Exists in namespace System.Data.Odbc and assembly System.Data - <li>Works on Windows and Linux + <li>Works on Windows and Linux. Should have no problems working on UNIX too. <li>Works on Windows via the native Windows odbc32.dll - <li>Works on Linux via <a href="http://www.unixodbc.org/">unixODBC</a> + <li>Works on Linux via: - <li>List of unixODBC <a href="http://www.unixodbc.org/drivers.html">drivers</a> and - an alternative list + <ul> + <li><a href="http://www.unixodbc.org/">unixODBC</a> which has + commercial support + from <a href="http://www.easysoft.com/">Easysoft</a></li> + + <li><a href="http://www.iodbc.org/">iODBC</a> which has + a commercial support + from <a href="http://oplweb.openlinksw.com:8080/download/">OpenLink Software</a></li> + </ul> - <li>An alternative to unixODBC, but not tested with this - provider is <a href="http://www.iodbc.org">iODBC</a> - - <li>Another alternative to unixODBC, but not tested this provider is - <a href="http://oplweb.openlinksw.com:8080/download/">OpenLink's</a>. + <li>List of unixODBC <a href="http://www.unixodbc.org/drivers.html">drivers</a> <li>List of <a href="http://ourworld.compuserve.com/homepages/Ken_North/odbcvend.htm">ODBC Vendors</a> + + <li>ODBC can connect to various databases which has an ODBC driver installed: + <ul> + <li><a href="http://www.mysql.com/">MySQL</a> + <li><a href="http://www.postgresql.org/">PostgreSQL</a> + <li><a href="http://www.oracle.com/">Oracle</a> + <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a> + <li><a href="http://www.sybase.com/downloads">Sybase</a> and + <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a> ( + via <a href="http://www.freetds.org/">FreeTDS</a> on UNIX) + <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> + <li><a href="http://www.microsoft.com/office/access/default.asp">MS Access</a> + (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a> on UNIX) + </ul> - <li>ODBC Provider created by Brian Ritchie. + <li>ODBC Provider created by Brian Ritchie.</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> - <li>Connect on Windows via native Windows odbc32.dll - - <li>Connect on Linux via unixODBC's libodbc.so + <li>Can Connect on: + <ul> + <li>Windows via native Windows odbc32.dll</a></li> + <li>Linux via: + <ul> + <li>unixODBC's libodbc.so</li> + <li>iODBC's libiodbc.so</li> + </ul> + </li> + </ul> + </li> <li>Various databases have been tested using their - ODBC drivers: MySQL, Oracle, IBM DB2, and Microsoft SQL Server + ODBC drivers: MySQL, PostgreSQL, Oracle, IBM DB2, and Microsoft SQL Server</li> - <li>Can execute non-query commands via ExecuteNonQuery of a OdbcCommand + <li>Can execute non-query commands via ExecuteNonQuery of a OdbcCommand</li> <li>Can execute aggreates and retrieve a single row single column result via - ExecuteScalar of a OdbcCommand + ExecuteScalar of a OdbcCommand</li> <li>Can execute queries via ExecuteReader of a OdbcCommand and - retrieve results using an OdbcDataReader. + retrieve results using an OdbcDataReader</li> + + <li>Can get a DataTable containing schema info via GetSchemaTable() in a OdbcDataReader</li> - <li>Can get a DataTable containing schema info via GetSchemaTable() in a OdbcDataReader + <li>Can Fill a DataTable in a DataSet via an OdbcDataAdapter</li> </ul> -* Action Plan +** Action Plan <ul> - <li>Create a Data Adapter to Fill data into a DataTable in a DataSet - <li>TODO + <li>Fixing bugs + + <li>Testing with other setups +</ul> + +** Testing ODBC provider + +<p>Test Mono's ODBC provider System.Data.Odbc with the MySQL ODBC driver MyODBC + +<p><ul> + <li>Take a look at OdbcTest.cs in mcs/class/System.Data/Test</li> + + <li>Here is a ConnectionString format if you have a DSN setup: +<pre> +"DSN=dataSetName;UID=username;PWD=password" +</pre> + </li> + <li>Here is a ConnectionString format if you do not have DSN (have not + gotten this to work): +<pre> +"DRIVER={SQL Server};SERVER=(local);UID=sa;PWD=;DATABASE=pubs" +</pre> + </li> + <li>C# Example: +<pre> + using System; + using System.Data; + using System.Data.Odbc; + + public class Test + { + public static void Main(string[] args) + { + // have an ODBC DSN setup named MYSQLDSN + // that accesses a MySQL database via + // MyODBC driver for ODBC with a + // hostname of localhost and database test + string connectionString = + "DSN=MYSQLDSN;" + + "UID=mysql;" + + "PWD=;"; + IDbConnection dbcon; + dbcon = new OdbcConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 +</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 +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + </ul> diff --git a/web/oledb b/web/oledb index d1b16252d14..a4f80e53d47 100755 --- a/web/oledb +++ b/web/oledb @@ -1,53 +1,142 @@ * OLE DB Provider + <ul> <li> Provides a OleDb-like provider for Mono - using <a href="http://www.gnome-db.org/">GDA</a> as the data access layer. + using <a href="http://www.gnome-db.org/">GDA</a> as the data access layer.</li> - <li> Exists in namespace System.Data.OleDb and assembly System.Data + <li> Exists in namespace System.Data.OleDb and assembly System.Data</li> - <li>Created by Rodrigo Moya + <li>Created by Rodrigo Moya</li> - <li>LibGDA has providers for: + <li>LibGDA has providers for:</li> <ul> - <li><a href="http://www.mysql.com/">MySQL</a> - <li><a href="http://www.postgresql.org/">PostgreSQL</a> - <li>XML - <li>ODBC (via <a href="http://www.unixodbc.org/">unixODBC</a>) - <li><a href="http://www.oracle.com/">Oracle</a> - <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a> + <li><a href="http://www.mysql.com/">MySQL</a></li> + <li><a href="http://www.postgresql.org/">PostgreSQL</a></li> + <li>XML</li> + <li>ODBC (via <a href="http://www.unixodbc.org/">unixODBC</a>)</li> + <li><a href="http://www.oracle.com/">Oracle</a></li> + <li><a href="http://www.borland.com/products/downloads/download_interbase.html">Interbase</a></li> <li><a href="http://www.sybase.com/downloads">Sybase</a> and <a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a> ( - via <a href="http://www.freetds.org/">FreeTDS</a>) - <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a> - <li><a href="http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a> - <li><a href="http://www.microsoft.com/office/access/default.asp">MS Access</a> - (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a>) + via <a href="http://www.freetds.org/">FreeTDS</a>)</li> + <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a></li> + <li><a href="http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a></li> + <li><a href="http://www.microsoft.com/office/access/default.asp">MS Access</a></li> + (via <a href="http://mdbtools.sourceforge.net/">MDB Tools</a>)</li> </ul> + </li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> <li>The OleDb provider is working with libgda (an OLE-DB/ADO data access for Unix). The C-Sharp bindings to libgda currently work - meaning they can compile, run, and you can connect to a - PostgreSQL database via libgda via the C-Sharp bindings to libgda. + PostgreSQL database via libgda via the C-Sharp bindings to libgda.</li> <li>Basic functionality (execution of commands, data retrieval, transactions, etc) are - now working. + now working.</li> <li>An inital implementation of GetSchemaTable() for the OleDbDataReader has been checked into cvs. GetSchemaTable() isn't correct for OleDb, - but the foundation is there. + but the foundation is there.</li> </ul> -* Action Plan +** Action Plan <ul> <li>Current focus is on filling up the missing pieces (Data adapters - mainly) and schema support. + mainly) and schema support.</li> <li>We need help building libgda on Windows though. libgda - builds find on linux though. + builds find on linux though.</li> + + <li>Need to make the OleDb provider compatible with the OleDb provider in Microsoft .NET</li> + </ul> + +** Testing OleDb with libgda's PostgreSQL provider - <li>Need to make the OleDb provider compatible with the OleDb provider in Microsoft .NET +<ul> + <li>Requires a working mono and mcs</li> + <li>Requires Linux because the OleDb provider uses libgda and libgda only + works on Linux.</li> + <li>Connection String format: "Provider=providerName;...". providerName is the + name of the Provider you use, such as, PostgreSQL, MySQL, etc. The elipsis ... + means that the connection parameters are dependent upon the provider being used and + are passed to libgda for connecting. Such paramters, can be: Database, User ID, Password, + Server, etc...</li> + <li>See the test TestOleDb.cs found at mcs/class/System.Data/System.Data.OleDb</li> + <li>C# Example for Mono's System.Data.OleDb: +<pre> + using System; + using System.Data; + using System.Data.OleDb; + + public class Test + { + public static void Main(string[] args) + { + // there is a libgda PostgreSQL provider + string connectionString = + "Provider=PostgreSQL;" + + "Addr=127.0.0.1;" + + "Database=rodrigo"; + IDbConnection dbcon; + dbcon = new OleDbConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 +</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 +</pre> + </li> </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> +</li> + +</ul> + diff --git a/web/oracle b/web/oracle index 9dc3864535f..e69f378b1a9 100755 --- a/web/oracle +++ b/web/oracle @@ -1,4 +1,5 @@ * Oracle Data Provider + <ul> <li>Exists in namespace System.Data.OracleClient and assembly System.Data.OracleClient</li> @@ -7,10 +8,14 @@ <li>Works with Oracle 8i</li> <li>More information about Oracle can be found at <a href="http://www.oracle.com/"/>here</a></li> + + <li>Created by Daniel Morgan.</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> <li>OracleConnection can connect to an Oracle 8i database on @@ -30,7 +35,7 @@ </ul> -* Action Plan +** Action Plan <ul> <li>Get the makefile for the Borland C++ compiler to work @@ -50,3 +55,92 @@ Marshalling in C# to the oci shared library (oci.dll on Windows)</li> </ul> + +** Testing Mono.Data.OracleClient + +<ul> + <li>Have a working mono and mcs</li> + + <li>Have access to an Oracle 8i database or download it from + <a href="http://www.oracle.com/">Oracle</a>. Registration to the + Oracle Technology Network is free. If installing on Linux, I suggest you + do a lot of searching to see how others installed Oracle on Linux.</li> + + <li>Make sure Mono.Data.OracleClient.dll assembly is built, if not, go + into Mono.Data.OracleClient and do a make -f makefile.gnu (on Linux) or + ../../nant/NAnt.exe (on Cygwin).</li> + + <li>The OCI Glue Library Mono.Data.OracleClient.ociglue.dll will need to be + created as well. Has only been tested with lc (Microsoft Visual C++ command-line compiler). + There is a make file for Microsoft C++ and Borland C++. I'm sure it wouldn't be hard + to create a makefile for gcc if installing on Linux.</li> + + <li>Take a look at TestOracleClient.cs found at mcs/class/System.Data.OracleClient/Test</li> + + <li>Has a connection string format: +<pre> +"Data Source=tnsname;User ID=userid;Password=password" +</pre> + </li> + <li>C# Example: +<pre> + using System; + using System.Data; + using System.Data.OracleClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Data Source=testdb;" + + "User ID=scott;" + + "Password=tiger;"; + IDbConnection dbcon; + dbcon = new OracleConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "insert into scott.emp " + + "(empno, ename, job, sal, deptno) " + + "values(123," + + "'Don Smith'," + + "'Cook'," + + "23021," + + "20)"; + dbcmd.ConnectionString = sql; + dbcmd.ExecuteNonQuery(); + 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 System.Data.OracleClient.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 System.Data.OracleClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/web/postgresql b/web/postgresql index afc7ecea2dd..2bd0b74d09f 100644 --- a/web/postgresql +++ b/web/postgresql @@ -1,16 +1,27 @@ * PostgreSQL Data Provider <ul> - <li>Exists in namespace Mono.Data.PostgreSql and assembly Mono.Data.PostgreSql + <li>Exists in namespace Mono.Data.PostgreSql and assembly Mono.Data.PostgreSql</li> <li>Is a Mono Data Provider for the <a href="http://www.postgresql.org/">PostgreSQL</a> - client/server database management system. + client/server database management system.</li> <li>Written in C# and has C# bindings to the PostgreSQL C Client library pq.dll on Windows - and libpq.so on Linux. + and libpq.so on Linux.</li> + + <li>Alternative to the PostgreSQL provider in Mono: + <ul> + <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> + is a Managed PostgreSQL provider written in 100% C#, does not require a client library, + and works on Microsoft .NET and Mono. + </li> + </ul> + </li> + + <li>See Testing for both Mono's Mono.Data.PostgreSqlClient and Npgsql.</li> </ul> -* Current Status +** Current Status <ul> <li>We are able to do simple CREATE TABLE, DROP TABLE, UPDATE, INSERT, and @@ -70,12 +81,23 @@ See the test mcs/class/System.Data/Test/TestSqlDataAdapter.cs to see it in action. </ul> -* Testing the PostgreSQL Provider +** Action Plan + + <p>More testing and fixing bugs... + + <p>Eventually replace the PostgreSQL data provider in Mono + with <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>. + Npgsql is a .Net Data Provider for PostgreSQL which implements + the <a href="http://developer.postgresql.org/docs/postgres/protocol.html">PostgreSQL Frontend/Backend Protocol</a>. + Npgsql is implemented in 100% C#. This provider was created by Francisco Figueiredo jr. + and has many programmers developing the provider. + +** Testing Mono's Mono.Data.PostgreSqlClient <ul> * <p>In order to test Mono.Data.PostgreSqlClient, you will need to have access to a remote PostgreSQL DBMS, or you will have to install - one locally. PostgreSQL was first ADO.NET provider created in Mono. + one locally. PostgreSQL was the first ADO.NET provider created in Mono. <p>Why use PostgreSQL? Because it is free software, has a client library that is easy to use, PostgreSQL is easy to install on @@ -94,7 +116,9 @@ user "postgres". <pre> -"host=localhost;dbname=test;user=postgres" +"Server=localhost;Database=test;User ID=postgres;Password=fun2db" + (or) +"host=localhost;dbname=test;user=postgres;password=fun2db" </pre> </ul> @@ -179,9 +203,15 @@ create user postgres with password 'fun2db'; * <p>Important notes from this file are: <ul> - <p><b>2.</b> - Install the latest <a href="http://www.neuro.gatech.edu/users/cwilson/cygutils/OBSOLETE/V1.1/cygipc/index.html">CygIPC</a> package. + <p><b>2.</b> - Install the latest <a href="http://www.neuro.gatech.edu/users/cwilson/cygutils/cygipc/index.html">CygIPC</a> package. + Cygwin includes a utility bunzip2 which can be used to unzip it. Now, change to + the root directory by + typing "cd /" then + you can use "tar xvf cygipc.xxx.tar" to untar it + in the root directory in cygwin. - <p>The cygipc package contains the ipc-daemon you will need + <p>The cygipc package contains the support to run ipc-daemon + that you will need to run before you can run the PostgreSQL DBMS Server daemon (postmaster) or run initdb which initializes the PostgreSQL database. @@ -267,34 +297,9 @@ create user postgres with password 'fun2db'; </ul> <p>In the path mcs/class/System.Data/Test - there is a PostgreSQL test program named + there is a test for Mono.Data.PostgreSqlClient named PostgreTest.cs. Thanks goes to Gonzalo for creating the original PostgreSQL test. - - <p>To use it to test System.Data, you - modify the file to your PostgreSQL database - connection requirements: - - <p> - <ul> - <li><b>dbname</b> database, ie., test</li> - <li><b>host</b> hostname of the PostgreSQL DBMS Server, ie., localhost</li> - <li><b>user</b> username, ie., someuser</li> - <li><b>password</b> password, ie., mypass1234</li> - </ul> - - <p>The connection string is in OLE-DB connection string format. Internally, - SqlConnection converts this to the PostgreSQL connection string format. - - <p> -<pre> - OLE-DB: "host=localhost;dbname=test;user=joe;password=smoe" -PostgreSQL: "host=localhost dbname=test user=joe password=smoe" -</pre> - - <p> - Note that OLE-DB includes the semicolons while PostgreSQL's connection - string does not. <p> To compile the PostgresTest.cs program, do: @@ -310,7 +315,7 @@ PostgreSQL: "host=localhost dbname=test user=joe password=smoe" to PgSqlConnection, then you need to run mcs like: <pre> - mono f:/cygwin/home/DanielMorgan/mono/install/bin/mcs.exe \ + mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \ PostgresTest.cs \ -r System.Data.dll \ -r Mono.Data.PostgreSqlClient.dll @@ -328,185 +333,160 @@ mint PostgresTest.exe To run using mono, do: <pre> mono PostgresTest.exe -</pre> - - <p>Below, I show how the output from PostgresTest. I have omitted a lot - of the meta data for the columns except two columns. The classes - used were from Mono.Data.PostgreSqlClient and were used to connect to a - PostgreSQL database and retrieve data. - -<p> -<pre> - - danmorg@DANPC ~/mono/mcs/class/System.Data/Test - $ mcs PostgresTest.cs -r System.Data.dll - - danmorg@DANPC ~/mono/mcs/class/System.Data/Test - $ mono PostgresTest.exe - Postgres provider specific tests... - - Drop table: - Error (don't worry about this one)SqlError:PGRES_FATAL_ERROR ERROR: - table "mono_postgres_test" does not exist - <Stack Trace> - - Create table with all supported types: - OK - Insert values for all known types: - OK - Update values: - OK - Insert values for all known types: - OK - Aggregate: count(*) - Agg Result: 2 - Aggregate: min(text_value) - Agg Result: This is a text - Aggregate: max(int4_value) - Agg Result: 1048000 - Aggregate: sum(int4_value) - Agg Result: 1048003 - Select values from the database: - Result is from a SELECT SQL Query. Records Affected: -1 - Result Set 1... - Total Columns: 28 - ColumnName = boolean_value - ColumnOrdinal = 1 - ColumnSize = 1 - NumericPrecision = 0 - NumericScale = 0 - IsUnique = False - IsKey = - BaseCatalogName = - BaseColumnName = boolean_value - BaseSchemaName = - BaseTableName = - DataType = System.Boolean - AllowDBNull = False - ProviderType = 16 - IsAliased = False - IsExpression = False - IsIdentity = False - IsAutoIncrement = False - IsRowVersion = False - IsHidden = False - IsLong = False - IsReadOnly = False - - ... - - ColumnName = null_timestamp_value - ColumnOrdinal = 28 - ColumnSize = 8 - NumericPrecision = 0 - NumericScale = 0 - IsUnique = False - IsKey = - BaseCatalogName = - BaseColumnName = null_timestamp_value - BaseSchemaName = - BaseTableName = - DataType = System.DateTime - AllowDBNull = False - ProviderType = 1184 - IsAliased = False - IsExpression = False - IsIdentity = False - IsAutoIncrement = False - IsRowVersion = False - IsHidden = False - IsLong = False - IsReadOnly = False - - Gonna do a Read() now... - Row 0: - Col 0: boolean_value: False - Col 1: int2_value: 5 - Col 2: int4_value: 3 - Col 3: bigint_value: 9 - Col 4: float_value: 3.141590 - Col 5: double_value: 3.14159 - Col 6: numeric_value: 123456789012.345 - Col 7: char_value: Mono.Data! - Col 8: varchar_value: It was not me! - Col 9: text_value: We got data! - Col 10: point_value: (1,0) - Col 11: time_value: 01/01/1 21:13:14 - Col 12: date_value: 02/29/2000 00:00:00 - Col 13: timestamp_value: 02/29/2004 14:00:11 - Col 14: null_boolean_value is NULL - Col 15: null_int2_value is NULL - Col 16: null_int4_value is NULL - Col 17: null_bigint_value is NULL - Col 18: null_float_value is NULL - Col 19: null_double_value is NULL - Col 20: null_numeric_value is NULL - Col 21: null_char_value is NULL - Col 22: null_varchar_value is NULL - Col 23: null_text_value is NULL - Col 24: null_point_value is NULL - Col 25: null_time_value is NULL - Col 26: null_date_value is NULL - Col 27: null_timestamp_value is NULL - Row 1: - Col 0: boolean_value: True - Col 1: int2_value: -22 - Col 2: int4_value: 1048000 - Col 3: bigint_value: 123456789012345 - Col 4: float_value: 3.141590 - Col 5: double_value: 3.14159 - Col 6: numeric_value: 123456789012.345 - Col 7: char_value: This is a char - Col 8: varchar_value: This is a varchar - Col 9: text_value: This is a text - Col 10: point_value: (1,0) - Col 11: time_value: 01/01/1 21:13:14 - Col 12: date_value: 02/29/2000 00:00:00 - Col 13: timestamp_value: 02/29/2004 14:00:11 - Col 14: null_boolean_value is NULL - Col 15: null_int2_value is NULL - Col 16: null_int4_value is NULL - Col 17: null_bigint_value is NULL - Col 18: null_float_value is NULL - Col 19: null_double_value is NULL - Col 20: null_numeric_value is NULL - Col 21: null_char_value is NULL - Col 22: null_varchar_value is NULL - Col 23: null_text_value is NULL - Col 24: null_point_value is NULL - Col 25: null_time_value is NULL - Col 26: null_date_value is NULL - Col 27: null_timestamp_value is NULL - Total Rows Retrieved: 2 - Total Result sets: 1 - Call ExecuteReader with a SQL Command. - (Not INSERT,UPDATE,DELETE - ). - Result is from a SQL Command not (INSERT,UPDATE,DELETE). - Records Affected: -1 - Total Result sets: 0 - Call ExecuteReader with a SQL Command. - (Is INSERT,UPDATE,DELETE) - . - Result is from a SQL Command (INSERT,UPDATE,DELETE). Records Affected: 1 - Total Result sets: 0 - Calling stored procedure version() - Result: PostgreSQL 7.2.1 on i686-pc-cygwin, compiled by GCC 2.95.3-5 - Database Server Version: PostgreSQL 7.2.1 on i686-pc-cygwin, - compiled by GCC 2.9 - 5.3-5 - Clean up... - Drop table... - OK - RESULT: 0 +</pre> + <p>C# Example for Mono.Data.PostgreSqlClient: +<pre> + using System; + using System.Data; + using Mono.Data.PostgreSqlClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=postgres;" + + "Password=fun2db;"; + IDbConnection dbcon; + dbcon = new PgConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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.PostgreSqlClient.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.PostgreSqlClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe </pre> +</li> +</ul> -* Action Plan +** Testing Npgsql - <p>Eventually replace the PostgreSQL data provider in Mono - with <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>. - Npgsql is a .Net Data Provider for PostgreSQL which implements - the <a href="http://developer.postgresql.org/docs/postgres/protocol.html">PostgreSQL Frontend/Backend Protocol</a>. - Npgsql is implemented in 100% C#. This provider was created by Francisco Figueiredo jr. - and has many programmers developing the provider. +<ul> + <li>Have a working mono and mcs</li> + + <li>Get <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> + and make sure the binary assembly Npgsql.dll is installed in the same place that the + mono class libraries are located. + + <li>Read the Testing notes for Mono.Data.PostgreSqlClient too + + <li>C# Example for Npgsql: +<pre> + using System; + using System.Data; + using Npgsql; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=test;" + + "User ID=postgres;" + + "Password=fun2db;"; + IDbConnection dbcon; + dbcon = new NpgsqlConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["firstname"]; + string LastName = reader["lastname"]; + 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 Npgsql.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 Npgsql.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> +</li> +</ul> + diff --git a/web/sqlclient b/web/sqlclient index f73ba3eb4f4..df76f9d620a 100755 --- a/web/sqlclient +++ b/web/sqlclient @@ -1,58 +1,147 @@ * Microsoft SQL Server Provider <ul> - <li>ADO.NET Provider for Microsoft SQL Server 7/2000 databases + <li>ADO.NET Provider for Microsoft SQL Server 7/2000 databases</li> - <li>Exists in namespace System.Data.SqlClient and assembly System.Data + <li>Exists in namespace System.Data.SqlClient and assembly System.Data</li> - <li>Created by Tim Coleman + <li>Created by Tim Coleman</li> <li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and - <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources. + <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li> - <li>Implemented in 100% C# + <li>Implemented in 100% C#</li> - <li>Is similar to the Mono.Data.TdsClient and Mono.Data.SybaseClient providers. + <li>Is similar to the Mono.Data.TdsClient and Mono.Data.SybaseClient providers.</li> + + <li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li> + + <li>Uses TDS Protocol Version 7.0</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status - + +** Current Status + + <ul> - <li>Able to connect to Microsoft SQL Server 7/2000 databases + <li>Able to connect to Microsoft SQL Server 7/2000 databases</li> - <li>Connection pooling works. + <li>Connection pooling works.</li> - <li>Stored Procedures work + <li>Stored Procedures work</li> - <li>Parameters work. + <li>Parameters work.</li> - <li>Prepare works. + <li>Prepare works.</li> <li>SQL commands can be executed - via ExecuteNonQuery() of a SqlCommand. + via ExecuteNonQuery() of a SqlCommand.</li> <li>SQL aggregates can be executed and a single row and single column - result can be retrieved via ExecuteScalar() of a SqlCommand + result can be retrieved via ExecuteScalar() of a SqlCommand</li> <li>SQL queries can be executed via ExecuteReader() and results - can be retrieved via SqlDataReader. + can be retrieved via SqlDataReader.</li> <li>a DataTable with schema info about a result can be gotten via GetSchemaTable() - in a SqlDataReader + in a SqlDataReader</li> - <li>XML can be read via ExecuteXmlReader in a SqlCommand. + <li>XML can be read via ExecuteXmlReader in a SqlCommand.</li> - <li>Data can be filled in a DataTable in a DataSet via a SqlDataAdapter + <li>Data can be filled in a DataTable in a DataSet via a SqlDataAdapter</li> - <li>Uses TDS Protocol Version 7.0 + <li>Uses TDS Protocol Version 7.0</li> - <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a> + <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a></li> </ul> -* Action plan +** Action plan <ul> <li>Connection timeouts is being developed now. - <li>TODO + <li>Needs more testing... + </ul> + +** Testing + +<ul> + <li>Have a working mono and mcs installed</li> + + <li>Have access to a Microsoft SQL Server database + or either download it: + <ul> + <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a></li> + </ul> + </li> + + <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient + named SqlTest.cs and you could use this as a basis for your test.</li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using System.Data.SqlClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=pubs;" + + "User ID=sa;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new SqlConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "SELECT fname, lname " + + "FROM employee"; + dbcmd.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["fname"]; + string LastName = reader["lname"]; + 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 +</pre> + </li> + <li>Build on Windows via Cygwin: +<pre> + mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \ + TestExample.cs -r System.Data.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/web/sqlite b/web/sqlite index 07312db51b6..85b35c997aa 100755 --- a/web/sqlite +++ b/web/sqlite @@ -1,28 +1,112 @@ * SQL Lite Data Provider <ul> - <li>Exists in namespace and assembly Mono.Data.SqliteClient + <li>Exists in namespace and assembly Mono.Data.SqliteClient</li> - <li>Created by Vladimir Vukicevic + <li>Created by Vladimir Vukicevic</li> <li><a href"http://www.hwaci.com/sw/sqlite/download.html">SQL Lite</a> binaries exist for Linux and Windows. sqlite.dll on Windows - and sqlite.so on Linux. + and sqlite.so on Linux.</li> </ul> -* Current Status +** Current Status <ul> - <li>Able to connect, execute commands, and retrieve data... + <li>Able to connect, execute commands, and retrieve data...</li> - <li>Works in mPhoto + <li>Works in mPhoto by providing access to a SQL Lite database to store images.</li> </ul> -* Action Plan +** Action Plan <ul> <li>Create a DataAdapter for SQL Lite named SqliteDataAdapter that can be used to - Fill a DataTable in a DataSet + Fill a DataTable in a DataSet</li> - <li>TODO + <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 MySQLConnection(connectionString); + 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.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader[0]; + string LastName = 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> + diff --git a/web/sybase b/web/sybase index 6a165fab98c..6a3b859c5b1 100755 --- a/web/sybase +++ b/web/sybase @@ -1,48 +1,134 @@ * Sybase Data Provider <ul> - <li>ADO.NET Provider for Sybase SQL Server databases + <li>ADO.NET Provider for Sybase SQL Server databases</li> - <li>Exists in namespace Mono.Data.SybaseClient and assembly Mono.Data.SybaseClient + <li>Exists in namespace Mono.Data.SybaseClient and assembly Mono.Data.SybaseClient</li> - <li>Created by Tim Coleman + <li>Created by Tim Coleman</li> <li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and - <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources. + <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li> - <li>Implemented in 100% C# + <li>Implemented in 100% C#</li> - <li>Is similar to the Mono.Data.TdsClient and System.Data.SqlClient providers. + <li>Is similar to the Mono.Data.TdsClient and System.Data.SqlClient providers.</li> - <li>Uses TDS Protocol Version 5.0 + <li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li> - <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a> + <li>Uses TDS Protocol Version 5.0</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status <ul> - <li>Able to connect to Sybase databases + <li>Able to connect to Sybase databases</li> <li>SQL commands can be executed - via ExecuteNonQuery() of a SybaseCommand. + via ExecuteNonQuery() of a SybaseCommand.</li> <li>SQL aggregates can be executed and a single row and single column - result can be retrieved via ExecuteScalar() of a SybaseCommand + result can be retrieved via ExecuteScalar() of a SybaseCommand</li> <li>SQL queries can be executed via ExecuteReader() and results - can be retrieved via SybaseDataReader. + can be retrieved via SybaseDataReader.</li> <li>a DataTable with schema info about a result can be gotten via GetSchemaTable() - in a SybaseDataReader + in a SybaseDataReader</li> - <li>Data can be filled in a DataTable in a DataSet via a SybaseDataAdapter + <li>Data can be filled in a DataTable in a DataSet via a SybaseDataAdapter</li> </ul> -* Action plan +** Action plan <ul> <li>Connection timeouts is being developed now. + + <li>Needs more testing... - <li>TODO </ul> + +** Testing + +<ul> + <li>Have a working mono and mcs installed</li> + + <li>Have access to a Sybase database + or either download it: + <ul> + <li><a href="http://www.sybase.com/downloads">Sybase</a></li> + </ul> + </li> + + <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient + named SqlTest.cs and you could use this as a basis for your test.</li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.SybaseClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=pubs;" + + "User ID=sa;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new SybaseConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "SELECT fname, lname " + + "FROM employee"; + dbcmd.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["fname"]; + string LastName = reader["lname"]; + 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.SybaseClient.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.SybaseClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> + +</ul> + diff --git a/web/tdsclient b/web/tdsclient index c6fcafb842c..c5f494a7c66 100755 --- a/web/tdsclient +++ b/web/tdsclient @@ -1,51 +1,137 @@ * TDS Generic Provider <ul> - <li>ADO.NET Provider for older Sybase and Microsoft SQL Server databases + <li>ADO.NET Provider for older Sybase and Microsoft SQL Server databases</li> - <li>Exists in namespace Mono.Data.TdsClient and assembly Mono.Data.TdsClient + <li>Exists in namespace Mono.Data.TdsClient and assembly Mono.Data.TdsClient</li> - <li>Created by Tim Coleman + <li>Created by Tim Coleman</li> <li>Used the <a href="http://www.freetds.org/">FreeTDS</a> and - <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources. + <a href="http://jtds.sourceforge.net/">jTDS</a> projects as resources.</li> - <li>Implemented in 100% C# + <li>Implemented in 100% C#</li> - <li>Is similar to the Mono.Data.SybaseClient and System.Data.SqlClient providers. + <li>Is similar to the Mono.Data.SybaseClient and System.Data.SqlClient providers.</li> - <li>Uses TDS Protocol Version 4.2 by default + <li>Requires the assembly Mono.Data.Tds.dll which implements the TDS protocol in 100% C#.</li> - <li><a href="http://www.go-mono.com/tds-providers.html">Design of the Microsoft SQL Server, Sybase, and TDS Providers in Mono</a> + <li>Uses TDS Protocol Version 4.2 by default</li> + + <li>Does not support trusted connections</li> </ul> -* Current Status +** Current Status + <ul> <li>Only builds on Windows currently due to mcs does not support modules and mcs - has problems with code that is internal. + has problems with code that is internal.</li> - <li>Able to connect to Microsoft SQL Server and Sybase databases + <li>Able to connect to Microsoft SQL Server and Sybase databases</li> <li>SQL commands can be executed - via ExecuteNonQuery() of a TdsCommand. + via ExecuteNonQuery() of a TdsCommand.</li> <li>SQL aggregates can be executed and a single row and single column - result can be retrieved via ExecuteScalar() of a TdsCommand + result can be retrieved via ExecuteScalar() of a TdsCommand</li> <li>SQL queries can be executed via ExecuteReader() and results - can be retrieved via TdsDataReader. + can be retrieved via TdsDataReader.</li> <li>a DataTable with schema info about a result can be gotten via GetSchemaTable() - in a TdsDataReader + in a TdsDataReader</li> - <li>Data can be filled in a DataTable in a DataSet via a TdsDataAdapter + <li>Data can be filled in a DataTable in a DataSet via a TdsDataAdapter</li> </ul> -* Action plan +** Action plan <ul> - <li>Connection timeouts is being developed now. + <li>Connection timeouts is being developed now.</li> + + <li>TODO</li> +</ul> + +** Testing - <li>TODO +<ul> + <li>Have a working mono and mcs installed</li> + + <li>Have access to a Sybase or Microsoft SQL Server database + or either download it: + <ul> + <li><a href="http://www.microsoft.com/sql/default.asp">Microsoft SQL Server</a></li> + <li><a href="http://www.sybase.com/downloads">Sybase</a></li> + </ul> + </li> + + <li>Located at mcs/class/System.Data/Test is a test for System.Data.SqlClient + named SqlTest.cs and you could use this as a basis for your test.</li> + + <li>C# Example: +<pre> + using System; + using System.Data; + using Mono.Data.TdsClient; + + public class Test + { + public static void Main(string[] args) + { + string connectionString = + "Server=localhost;" + + "Database=pubs;" + + "User ID=sa;" + + "Password=;"; + IDbConnection dbcon; + dbcon = new TdsConnection(connectionString); + IDbCommand dbcmd = dbcon.CreateCommand(); + string sql = + "SELECT fname, lname " + + "FROM employee"; + dbcmd.ConnectionString = sql; + IDataReader reader = dbcmd.ExecuteReader(); + while(reader.Read()) { + string FirstName = reader["fname"]; + string LastName = reader["lname"]; + 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.TdsClient.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.TdsClient.dll +</pre> + </li> + </ul> + </li> + <li>Running the Example: +<pre> +mono TestExample.exe +</pre> + </li> </ul> + diff --git a/web/web/commands b/web/web/commands index dabbfacbe97..23a49c4bca7 100644 --- a/web/web/commands +++ b/web/web/commands @@ -34,6 +34,7 @@ 0,Plans,plans.html,plans.src 1,ADO.NET,ado-net.html,ado-net.src 2,Firebird Interbase,firebird.html,firebird.src +2,IBM DB2,ibmdb2.html,ibmdb2.src 2,Microsft SQL Server,sqlclient.html,sqlclient.src 2,MySQL,mysql.html,mysql.src 2,ODBC,odbc.html,odbc.src diff --git a/web/web/makefile b/web/web/makefile index 4fd3acb4947..5a037d1cc16 100644 --- a/web/web/makefile +++ b/web/web/makefile @@ -6,6 +6,7 @@ CORCOMPARE=../../../mcs/tools/corcompare OBJECTS= \ deploy/ado-net.html \ deploy/firebird.html \ + deploy/ibmdb2.html \ deploy/mysql.html \ deploy/odbc.html \ deploy/oledb.html \ |