2003-07-10 Andreas Nahr <ClassDevelopment@A-SoftTech.com>
[mono.git] / web / mysql
index e45ea0bee0b2d9c923115c65d6da460ba90c0d4a..56c5f11295030539380b22e9c7b7b9ccc858c528 100755 (executable)
--- a/web/mysql
+++ b/web/mysql
 * MySQL Data Provider
 
+ <p>There are two ADO.NET providers in Mono 
+ for a <a href="http://www.mysql.com/">MySQL</a> database:
+
 <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</li>
+       <li><a href="http://sourceforge.net/projects/mysqlnet/">ByteFX.Data.MySQLClient</a>
+               <ul>
+                       <li>Written in 100% C#</li>
+                       <li>Does not require a client library</li>
+                       <li>Works on Mono and Microsoft .NET</li>
+                       <li>Requires at least Mono 0.18 and MySQLNet 0.65 for it to work on Mono</li>
+                       <li>Works in the SQL# command-line and GTK# GUI version</li>
+               </ul>
+       </li>
 
-       <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).</li>
-           
-    <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.</li>
-    
-    <li>There is a good alternative to the provider in Mono:
+       <li>Mono.Data.MySql (deprecated)
                <ul>
-                       <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>
+                       <li>Deprecated in favor of ByteFX.Data.MySQLClient
+               
+                       <li>Written in C# and uses
+                               the MySQL C Client Library</li>
 
+                       <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).</li>
+           
+                       <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>
                </ul>
-               </li>
-       <li>Testing for Mono's Mono.Data.MySql and ByteFX's ByteFX.Data.MySQLClient is below...</li>
+       </li>
+       
+       <li>Bugs with Mono or the data provider should be reported 
+       in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>.  If you
+       do not have Bugzilla user account, it is free 
+       and easy to 
+       create one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
+       
 </ul>
+
+ <p><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.</li>
+
+ <p>Testing for Mono's Mono.Data.MySql and ByteFX's ByteFX.Data.MySQLClient is below.
     
 ** Current Status
 
+ Current Status of the MySQL providers:
+
 <ul>
-       <li>can connect
+
+       <li>ByteFX.Data.MySQLClient
+               <ul>
+                       <li>Build and Runs on Microsoft .NET and Mono</li>
+                       <li>Works with SQL# (command-line and GTK# GUI versions)</li>\r
+                       <li>MySQLCommandBuilder now implemented</li>\r
+                       <li>Transaction support now implemented (not all table types support this)</li>\r
+                       <li>GetSchemaTable fixed to not use xsd (for Mono)</li>\r
+                       <li>Driver is now Mono-compatible</li>\r
+                       <li>TIME data type now supported</li>\r
+                       <li>More work to improve Timestamp data type handling</li>\r
+                       <li>Changed signatures of all classes to match corresponding SqlClient classes</li>\r
+                       <li>Protocol compression  using <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/default.asp">SharpZipLib</a></li>\r
+                       <li>Named pipes on Windows now working properly</li>\r
+                       <li>Work done to improve Timestamp data type handling</li>\r
+                       <li>Implemented IEnumerable on DataReader so DataGrid would work</li>\r
+                       <li>Speed increased dramatically by removing bugging network sync code</li>\r
+                       <li>Driver no longer buffers rows of data (more ADO.Net compliant)</li>\r
+                       <li>Conversion bugs related to TIMESTAMP and DATETIME fields fixed</li>\r
+                       
+               </ul>
+       </li>
        
-       <li>can execute non-queries via ExecuteNonQuery()
+       <li>Mono.Data.MySql (deprecated)
+               <ul>
+                       <li>Currently, only works with version 3.23.x of MySQL</li>
+               
+                       <li>can connect</li>
+       
+                       <li>can execute non-queries via ExecuteNonQuery()</li>
        
-       <li>can execute aggregates via ExecuteScalar() and retrieve the
-       single row/single column result
+                       <li>can execute aggregates via ExecuteScalar() and retrieve the
+                               single row/single column result</li>
        
-       <li>can execute queries and retrieve results using a data reader.
+                       <li>can execute queries and retrieve results using a data reader.</li>
        
-       <li>a schema DataTable has been partially 
-       implemented which is returned from GetSchemaTable() in MySqlDataReader.
+                       <li>a schema DataTable has been partially 
+                               implemented which is returned from GetSchemaTable() in MySqlDataReader.</li>
        
-       <li>a DataTable in a DataSet can be filled via a MySqlDataAdapter 
+                       <li>a DataTable in a DataSet can be filled via a MySqlDataAdapter</li>
                
-       <li>The shared client libraries 
-       between windows version and linux are different: windows has libmySQL.dll 
-       while linux has libmysqlclient.so.  This is handled by the 
-       file etc/mono/config which is mapped by the mono runtime in knowing
-       which native shared library to load.  In cvs, this file is mono/config.in and
-       can be modified with a text editor.  
+                       <li>The shared client libraries 
+                               between windows version and linux are different: windows has libmySQL.dll 
+                               while linux has libmysqlclient.so.  This is handled by the 
+                               file etc/mono/config which is mapped by the mono runtime in knowing
+                               which native shared library to load.  In cvs, this file is mono/config.in and
+                               can be modified with a text editor.</li>
+       
+                       <li>Works in the SQL# command-line and GTK# GUI version</li>
+               </ul>
+       </li>
+       
 </ul>
 
 ** Action plan
 
-The current plan to work on the MySQL data provider:
-       
-       <ul>
-               <li>Parameters support via MySqlParameter and MySqlParameterCollection
-               
-               <li>Support LOBs (Large Object)
-               
-               <li>Change the MySQL provider to not be dependent on a client library and
-                   be written in 100% C#
-                   
-               <li>Connection pooling
-               
-               <li>Get the provider to work like other data providers
-       </ul>
+ The current plan for the MySQL data providers:
+ <ul>
+       <li>ByteFX.Data.MySQLClient
+               <ul>
+                       <li>Testing and fixes</li>
+                       <li>Implement missing features</li>
+                       <li>Only fixes for bugs to build and run MySQLClient on Mono
+                       will be accepted in mono-cvs.  Most bugs and any new features will
+                       go into sourceforge cvs.  Anytime there is a release of MySQLClient,
+                       the source code will be copied from sourceforge cvs to mono-cvs</li>
+                       <li>Releases of MySQLClient are determined by Reggie Burnett and releases
+                       of Mono are determined by Miguel de Icaza</li>
+                       <li>Implement any missing features or fix any bugs in Mono to get new
+                       features all of MySQLClient to work on Mono</li>
+               </ul>
+       </li>
+       <li>Mono.Data.MySql (deprecated)
+               <ul>
+                       <li>Testing and bug fixes</li>
+                       <li>Mono.Data.MySql is deprecated and therefore maybe removed
+                       at a later date.  It will stay in Mono for now because other
+                       programs maybe using it now.</li>
+               </ul>
+       </li>
+</ul>
 
-** Testing for Mono's MySQL provider (Mono.Data.MySql)
+** Testing for MySQLNet provider (ByteFX.Data.MySQLClient)
 
 <ul>
        <li>Have access to a MySQL database or download it from
@@ -79,26 +142,28 @@ The current plan to work on the MySQL data provider:
                </ul>
        </li>
        
-       <li>Take a look at MySqlTest.cs in mcs/class/Mono.Data.MySql/Test</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"
-         (or)
- "host=hostname;" +
- "dbname=database;" +
- "user=username;" +
- "passwd=password"
+"Server=hostname;" +
+"Database=database;" +
+"User ID=username;" +
+"Password=password"
 </pre>
-
+       </li>
        <li>C# Example:
 <pre>
  using System;
  using System.Data;
- using Mono.Data.MySql;
+ using ByteFX.Data.MySQLClient;
  
  public class Test 
  {
@@ -107,10 +172,11 @@ The current plan to work on the MySQL data provider:
        string connectionString = 
           "Server=localhost;" +
           "Database=test;" +
-          "User ID=mysql;" +
-          "Password=;";
+          "User ID=myuserid;" +
+          "Password=mypassword;";
        IDbConnection dbcon;
-       dbcon = new MySqlConnection(connectionString);
+       dbcon = new MySQLConnection(connectionString);
+       dbcon.Open();
        IDbCommand dbcmd = dbcon.CreateCommand();
        // requires a table to be created named employee
        // with columns firstname and lastname
@@ -119,15 +185,15 @@ The current plan to work on the MySQL data provider:
        //           firstname varchar(32),
        //           lastname varchar(32));
        string sql = 
-            "SELECT firstname, lastname " + 
-            "FROM employee";
-       dbcmd.ConnectionString = sql;
+           "SELECT firstname, lastname " +
+           "FROM employee";
+       dbcmd.CommandText = sql;
        IDataReader reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
-            string FirstName = reader["firstname"];
-            string LastName = reader["lastname"];
+            string FirstName = (string) reader["firstname"];
+            string LastName = (string) reader["lastname"];
             Console.WriteLine("Name: " + 
-                 FirstName + " " + LastName);
+                  FirstName + " " + LastName);
        }
        // clean up
        reader.Close();
@@ -145,9 +211,8 @@ The current plan to work on the MySQL data provider:
                <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
+       mcs TestExample.cs -r System.Data.dll \
+           -r ByteFX.Data.dll
 </pre>
                </li>
                <li>Build on Windows via Cygwin:
@@ -155,8 +220,7 @@ The current plan to work on the MySQL data provider:
        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
+            -r System.Data.dll -r ByteFX.Data.dll
 </pre>
                </li>
        </ul>
@@ -169,7 +233,7 @@ mono TestExample.exe
 
 </ul>
 
-** Testing for MySQLNet provider (ByteFX.Data.MySQLClient)
+** Testing for Mono's MySQL provider (Mono.Data.MySql)
 
 <ul>
        <li>Have access to a MySQL database or download it from
@@ -178,28 +242,21 @@ mono TestExample.exe
                </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>Take a look at MySqlTest.cs in mcs/class/Mono.Data.MySql/Test</li>
+       <li>On Linux, you may need to make a symbolic link from libmySQL.dll to libmysqlclient.dll</li>
        
        <li>Has a ConnectionString format: 
 <pre>
-"Server=hostname;" +
-"Database=database;" +
-"User ID=username;" +
-"Password=password"
+ "Server=hostname;Database=database;User ID=username;Password=password"
+         (or)
+ "Host=hostname;Dbname=database;User=username;Passwd=password"
 </pre>
-       </li>
+
        <li>C# Example:
 <pre>
  using System;
  using System.Data;
- using ByteFX.Data.MySQLClient;
+ using Mono.Data.MySql;
  
  public class Test 
  {
@@ -208,10 +265,11 @@ mono TestExample.exe
        string connectionString = 
           "Server=localhost;" +
           "Database=test;" +
-          "User ID=mysql;" +
-          "Password=;";
+          "User ID=myuserid;" +
+          "Password=mypassword;";
        IDbConnection dbcon;
-       dbcon = new MySQLConnection(connectionString);
+       dbcon = new MySqlConnection(connectionString);
+       dbcon.Open();
        IDbCommand dbcmd = dbcon.CreateCommand();
        // requires a table to be created named employee
        // with columns firstname and lastname
@@ -220,15 +278,15 @@ mono TestExample.exe
        //           firstname varchar(32),
        //           lastname varchar(32));
        string sql = 
-           "SELECT firstname, lastname " +
-           "FROM employee";
-       dbcmd.ConnectionString = sql;
+            "SELECT firstname, lastname " + 
+            "FROM employee";
+       dbcmd.CommandText = sql;
        IDataReader reader = dbcmd.ExecuteReader();
        while(reader.Read()) {
             string FirstName = reader["firstname"];
             string LastName = reader["lastname"];
             Console.WriteLine("Name: " + 
-                  FirstName + " " + LastName);
+                 FirstName + " " + LastName);
        }
        // clean up
        reader.Close();
@@ -246,8 +304,9 @@ mono TestExample.exe
                <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
+       mcs TestExample.cs \
+           -r System.Data.dll \
+           -r Mono.Data.MySql.dll
 </pre>
                </li>
                <li>Build on Windows via Cygwin:
@@ -255,7 +314,8 @@ mono TestExample.exe
        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
+            -r System.Data.dll \
+            -r Mono.Data.MySql.dll
 </pre>
                </li>
        </ul>
@@ -267,4 +327,3 @@ mono TestExample.exe
        </li>
 
 </ul>
-