2009-03-19 Ivan N. Zlatev <contact@i-nz.net>
[mono.git] / web / ado-net
index c78b62edfd1c3d5c5f4022820a837faa24861c0e..0095d79ef79996374030641fce45c5c8a01272ac 100644 (file)
@@ -3,19 +3,15 @@
 ** Data Access in Mono
 
 <ul>
-       <li>Today, our goal is to be compatible with .NET 1.0 and .NET 1.1.  We also would like
+       <li>Today, our goal is to be compatible with  .NET 1.1 and .NET 1.0.  We also would like
    to extend data access beyond what is included with .NET 1.0 and .NET 1.1,
-   such as, including access to more databases, such as, PostgreSQL and MySQL,
-   but also provide classes that help in creating data source-agnostic code, such as, Mono.Data.ProviderFactory.</li>
-   <li>In the future, we would like to be compatible with .NET 1.2. This
-   would include features like:
-       <ul> 
-               <li><a href="http://longhorn.msdn.microsoft.com/lhsdk/ndp/daconworkingwithobjectspacesarchitecture.aspx">ObjectSpaces</a></li>
-               <li>provide support for hosting Mono languages (C-Sharp, MonoBASIC, etc...)
-            within a DBMS engine, such as, MySQL or PostgreSQL.</li>
-               <li>implement .net 1.2 classes, such as, those found in System.Data.ProviderBase</li>
-               <li>other stuff which can be brought up on the mono-list</li>
-       </ul></li>
+   such as, include access to more databases, such as, PostgreSQL and MySQL,
+   but also provide classes that help in creating data source-agnostic code, such as, 
+   Mono.Data.ProviderFactory.</li>
+   
+   <li>In the future, we would like to be compatible with .NET 1.2. This includes features 
+   like <a href="http://longhorn.msdn.microsoft.com/lhsdk/ndp/daconworkingwithobjectspacesarchitecture.aspx">ObjectSpaces</a></li>
+       
 </ul>
 
 ** Bugs and Feature Requests
        <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>
-</ul>
-
-<p>Providers which we do not have, but we would like to have.  Currently,
-       some of these databases are supported via the ODBC or OLE DB providers.
-
-<ul>
-       <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>
-       <li><a href="http://www-3.ibm.com/software/data/informix/">Informix</a></li>    
-       <li><a href="http://msdn.microsoft.com/vfoxpro/">Foxpro</a></li>        
-       <li>Microsoft Access - could be done by creating C# bindings to <a href="http://mdbtools.sourceforge.net">MDB Tools</a></li>
-       <li>dbase or xbase type database files</li>
-       <li>Others are welcome</li>
+       <li><a href="http://www.go-mono.com/tdsclient.html">Older Microsoft SQL Server and Sybase databases</a></li>
 </ul>
 
 <p>External Projects that have created ADO.NET Providers that work on Mono:
 
 <p>Some tools that can be used for ADO.NET and other technologies (ASP.NET, XML, etc).
 
-<ul>   
-               <li><p><b>SQL# command line query tool</b> is a command-line tool to
-                   enter and execute SQL statements or 
-                   execute a batch of SQL commands from a file.
-                 <p>It can
-                 be used to test connection strings, connect to various ADO.NET
-                 providers, save output to text, html, or xml.
-                 <p>The SQL# CLI is distributed with the
-                 Mono runtime and class libraries as an executable assembly sqlsharp.exe.
-                 <p>The source to SQL# CLI can be found in the mcs source at
-                 mcs/tools/SqlSharp/SqlSharpCli.cs
-                 </li>
-                 
-               <li><p><b>SQL# For GTK#</b> - is a graphical SQL database query tool</b> allows a user
-                 to enter SQL commands in a top panel which is a text editor.
-                 <p>It has a toolbar and menu for various tasks, such as, executing
-                 SQL commands one-at-a-time or in a batch.  The results would appear
-                 in a bottom panel in a grid or could be saved to a file (xml, html, csv).
-                 <p>Also, the bottom panel would allow logging of SQL command executed.
-                 Here is a screenshot of <a href="http://go-mono.com/images/sqlsharp.png">SQL# For GTK#</a> which
-                 provides a GUI interface using the <a href="http://gtk-sharp.sourceforge.net">Gtk#</a> toolkit.
-                 <p>SQL# For GTK# can be found in mono cvs as sqlsharpgtk.</li>  
-</ul>
-
-<p>Tools we would like to have, but they have not been created yet:
-
 <ul>
-               <li>Mono has an <b>XML Schema Definition tool</b> (xsd.exe).</b>
-                                       
-                       <ul>
-                               <li>This tool
-                                       would works like the xsd.exe tool included with 
-                                       the .NET Framework.  The Xsd.exe tool has the\r
-                                       following uses:\r
-                                       <ul>\r
+       <li>sqlsharp.exe
+               <ul>
+                       <li>SQL# is a command line query tool included with Mono to enter and execute SQL statements</li>
+               </ul>
+       </li>
+       <li>xsd.exe
+               <ul>
+                       <li>XML Schema Definition tool</li>
+                               <ul>
                                        <li><b>XDR to XSD</b> - used to generate an XML schema from an XDR (XML Data Reduced schema) file. \r
                                                XDR was used by Microsoft prior to XSD becoming a W3C recommendation.  So, this needs\r
                                                to be supported for legacy reasons</li>\r
                                        <li><b>XSD to DataSet</b> - used to generate DataSet classes from an XSD schema file.  The\r
                                                DataSet classes created can then be used with XML data</li>\r
                                        <li><b>XSD to Classes</b> - used to generate classes from an XSD schema file. The \r
-                                           classes created can be used with System.XML.Serialization.XMLSerializer \r
-                                           to read and write XML code that follows the schema</li>\r
+                                               classes created can be used with System.XML.Serialization.XMLSerializer \r
+                                               to read and write XML code that follows the schema</li>\r
                                        <li><b>Classes to XSD</b> - used to generate an XML schema \r
                                                from type(s) in a assembly file. The \r
                                                XML schema created by the tool defines the XML format used \r
                                                by System.XML.Serialization.XMLSerializer</li>\r
-                                       </ul>\r
-                               <li>Xsd.exe is used to manipulate XML schemas that \r
-                                       follow the http://www.w3.org/XML/Schema">XML Schema Definition (XSD)</a> language \r
-                                       recommended     by the <a href="http://w3.org/">World Wide Web Consortium (W3C)</a></li>\r
-                                       \r
-                               <li>How this tool could be created:\r
-                                       <ul>\r
-                                               <li>Write xsd.exe in C# and run on Mono</li>\r
-                                               <li>Make sure we have XML Schema support in System.Xml.Schema.  Currently,\r
-                                               it is wrapped around libxlst</li>\r
-                                               <li>XML serialization support in System.Data classes</li>\r
-                                               <li>Create the TypedDataSetGenerator class in System.Data</li>\r
-                                               <li>Using CodeDOM or Reflection.Emit to create code</li>\r
-                                               <li>Make sure DataSet, XmlDataDocument, and related classes \r
-                                               are implemented fully</li>\r
-                                       </ul>\r
-                               </li>   \r
-                               
-                       </li>
-                       </ul>
-               </li>
-               
-               <li><b>Application XML Configuration File Editor</b> - a tool
-               to create and edit an application configuration file, such as,
-               we have a .net application named Accouting.exe, the tool could edit
-               the application configuration file Accounting.exe.config so a user could
-               connect to the database used by the program.  This tool has not
-               been created.</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
-                 configuration tool can be used to do the following:
-                 <ul> 
-                       <li>bebased on the Application XML Configuration File Editor</li>
-                       <li>setup DSNs for the ODBC and OLE-DB
-                               providers and configurations for 
-                               their underlying libraries (unixODBC and libgda)</li>
-                   <li>setup configurations for the Mono.Data.ProviderFactory
-                               that Brian Ritchie created</li>
-                   <li>setup native database client library configurations too, such as,
-                               freetds.conf for Microsoft SQL Server and Sybase</li>
-                 </ul>
-               </li>
-
+                               </ul>\r
+                       </li>\r
+               </ul>\r
+       </li>
 </ul>
 
 ** Extra Classes in Mono ADO.NET
        connections, commands, parameters, and data adapters based on configuration 
        information.
        
-** Current Status
-
-       <p>Various ADO.NET Providers have been created at various stages of 
-       development including: 
-       Firebird/Interbase, IBM DB2 Universal Database, MySQL, ODBC, OLE DB, Oracle,
-       PostgreSQL, SQL Lite, Sybase, Microsoft SQL Server, and TDS Generic.  
-       See their respective web page for more information.
-       
-       <p><b>Data Relations</b> via DataRelation, DataRelationCollection, and
-       other classes have not been implemented
-       
-       <p><b>Constraints</b> need lots of work
-       
-       <p><b>XML Schema Definition tool</b> xsd.exe that is included
-       in the .NET Framework has not been created for Mono
-       
-       <p><b>TypeDataSetGenerator</b> needs to be stubbed and implemented.
-               
-       <p><b>DataSet, DataAdaptor, DataTable, DataRelation, DataRow, DataColumn,
-       DataColumnCollection, DataRowCollection, and others</b> need more work.  There are
-       many classes that are just stubs and need to be implemented.  Ville Palo has been
-       doing much testing here.
-
-       <p><b>XML support in System.Data</b> needs work.  This involves working on
-       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.  Ville Palo has been
-       heavily modifying DataSet, XmlDataDocument, and other classes for reading
-       and writing XML.  XML Serialization support in DataSet needs to be implemented.
-               
-       <p><b>Integration with ASP.NET</b> has been created.  Data binding of
-       a DataTable in a DataSet to a System.Web.UI.WebControls.DataGrid works.  Data binding
-       of other types works too.
-       
-       <p><b>Database Access from ASP.NET</b>:
+** Database Access from 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><b>DBProviderAssembly</b> is the assembly of the ADO.NET provider.  
                                              For example: 
-                                             "Mono.Data.PostgreSqlClient"</li>
+                                             "ByteFX.Data"</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> 
+                                         "ByteFX.Data.MySqlConnection"</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: 
                        </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
-       in System.Windows.Forms and System.Data.
-       
-       <p><b>Integration with <a href="http://gtk-sharp.sourceforge.net/">GTK#</a></b> 
-       has not been started, such as, data binding
-       to a GtkTreeView.  This may involve creating new classes
-       to go between the glist data model and the ADO.NET data model.
-       Mike Kestner or Rachel Hestilov would be the best people to ask for help on GTK#.
-       
-       <p><b>Integration with QT#</b> has not been started.  Any information on 
-       how this can be done is appreciated.  Marcus would be the best 
-       person to ask about QT#.
-       
-       <p><b>Building System.Data</b>
-       
-       <p>The System.Data.dll gets built with the rest of the class library.
-       To compile the System.Data.dll assembly separately, you need:
-
-       <b>On Unix</b>
-
-       <ul>
-               * update your mono sources. Be sure you have latest mcs.exe
-                 and .dll's, since there have been many fixes needed for
-                 compilation on Linux.
-
-               * compile System.Data.dll:
-<pre>
- cd mcs/class/System.Data<br>
- mcs --target library -o \
-    System.Data.dll @list
-</pre>
-       </ul>
-
-       <b>On Windows</b>
-
-       <ul>
-               * update your mono sources. Be sure you have latest mcs.exe
-                 and .dll's.  You can use the same method as Linux, 
-                 or you can use NAnt.
-
-               * To use NAnt:
-
-<pre>
- cd mcs/class/System.Data
- ../../nant/NAnt.exe
-</pre>
-                       
-               * This will automatically copy the System.Data.dll to Test.
-                 If you need to do a clean for the System.Data.dll assembly,<br><br>
-
-<pre>
- cd mcs/class/System.Data
- ../../nant/NAnt.exe clean 
-</pre>
-       </ul>
 
 ** Testing
 
                                <td>System.Data /</br> System.Data.SqlClient</td>
                                <td>SqlTest.cs at</br> System.Data/Test</td>
                        </tr>
-                       
-                       <tr>
-                               <td>PostgreSQL</br> (Mono)</td>
-                               <td>Mono.Data.PostgreSqlClient /</br> Mono.Data.PostgreSqlClient</td>
-                               <td>PostgresTest.cs at</br> System.Data/Test</td>
-                       </tr>
 
                        <tr>
-                               <td>MySQL</br> (Mono)</td>
-                               <td>Mono.Data.MySql /</br> Mono.Data.MySql</td>
-                               <td>MySqlTest.cs at</br> Mono.Data.MySql/Test</td>
+                               <td>PostgreSQL</br> (Npgsql)</td>
+                               <td>Npgsql /</br> Npgsql</td>
+                               <td>*.cs at</br> Npgsql/Test</td>
                        </tr>
 
                        <tr>
                                <td>Oracle</br> (Mono)</td>
                                <td>System.Data.OracleClient /</br> System.Data.OracleClient</td>
-                               <td>TestOracleClient.cs at</br> System.Data.OracleClient</td>
+                               <td>TestOracleClient.cs at</br> System.Data.OracleClient/Test</td>
                        </tr>
 
                        <tr>
                                <td>ODBC</br> (Mono)</td>
-                               <td>System.Data.OracleClient /</br> System.Data.OracleClient</td>
-                               <td>TestOracleClient.cs at</br> System.Data.OracleClient</td>
+                               <td>System.Data.Odbc /</br> System.Data</td>
+                               <td>OdbcTest.cs (to connect to MS SQL Server)at</br> System.Data/Test</td>
                        </tr>
                        
                </table>
                        <li>To run all the NUnit tests for Mono, you need the mcs source.  cd to the root
                        of the mcs source.  To run it:
                                <ul>
-                                       <li>On Linux: make -f makefile test</li>
-                                       <li>On Windows: make test</li>
+                                       <li>make test</li>
                                </ul>
                        </li>
                        <li>If you just want to run the NUnit tests for System.Data, you would cd into
                        the mcs source at class/System.Data/Test and run it:
                                <ul>
-                                       <li>On Linux: make -f makefile test</li>
-                                       <li>On Windows: make test</li>
+                                       <li>make test</li>
                                </ul>
                        </li>
                </ul>