More updates
[mono.git] / web / ado-net
1 * ADO.NET
2
3         The coordinator for the ADO.NET implementation is 
4         <a href="mailto:rodrigo@ximian.com">Rodrigo Moya</a>, 
5         with the collaboration of: 
6         <a href="mailto:danmorg@sc.rr.com">Daniel Morgan</a>, 
7         <a href="mailto:tim@timcoleman.com">Tim Coleman</a>,
8         <a href="mailto:brianlritchie@hotmail.com">Brian Ritchie</a>, and
9         <a href="mailto:vladimir@pobox.com">Vladimir Vukicevic</a>.
10         
11
12 * Action plan
13
14         <p>The current plan to implement ADO.NET is as follows:
15
16         <ul>
17                 <li>Either create ADO.NET providers or modify pre-exiting ADO.NET providers to
18                 work with Mono
19                 
20                 <ul>
21                         <li>Create ADO.NET Providers
22                         
23                         <ul>
24                                         <li><a href="http://www.go-mono.com/mysql.html">MySQL</a>
25                                         <li><a href="http://www.go-mono.com/odbc.html">ODBC</a>
26                                         <li><a href="http://www.go-mono.com/oracle.html">Oracle</a>
27                                         <li><a href="http://www.go-mono.com/oledb.html">OLE DB</a>
28                                         <li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a>
29                                         <li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a>
30                                         <li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a>
31                                         <li><a href="http://www.go-mono.com/sybase.html">Sybase</a>
32                                         <li><a href="http://www.go-mono.com/tdsclient.html">TDS Generic</a>
33                                         <li>Providers which we do not have, but we would like to have.  Currently,
34                                         some of these databases are supported via the ODBC or OLEDB providers.
35                                         <ul>
36                                                 <li><a href="http://www-3.ibm.com/software/data/db2/">IBM DB2 Universal Database</a>
37                                                 <li><a href="http://www.hughes.com.au/">miniSQL</a></li>
38                                                 <li><a href="http://www.sleepycat.com/">BerkeleyDB (Sleepycat)</a></li>
39                                                 <li><a href="http://www.sapdb.org/">SapDB</a></li>
40                                                 <li>Microsoft Access - could be done by creating C# bindings to <a href="http://mdbtools.sourceforge.net">MDB Tools</a></li>
41                                                 <li>dbase or xbase type database files</li>
42                                                 <li>Others are welcome</li>
43                                         </ul>
44                                 </ul>
45                                 <br>
46                         <li>Modify Pre-existing ADO.NET Providers to work with Mono.  This may
47                         require fixing or implementing areas of Mono too.
48                                 <ul>
49                                         <li><a href="http://www.go-mono.com/firebird.html">Firebird Interbase</a></li>
50                                         <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a PostgreSQL Managed data provider written 
51                                         in 100% C# and does not require a client library </li>
52                                         <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a MySQL Manager data provider written in 100% C# and does not
53                                         require a client library</li>
54                                         <li><a href="http://sourceforge.net/projects/mysqldrivercs/">MySQLDriverCS</a> is a MySQL data provider written in C#</li>
55                                         
56                                 </ul>
57                         </li>
58                 </ul>
59         <br>
60         <li>Create Tools for Configuration, Testing, and Entering SQL Queries  
61         <ul>
62                 <li><b>SQL# CLI - a command-line tool</b> written in C# to 
63                   execute SQL commands,
64                   test connection strings, and connect to various ADO.NET
65                   providers in Mono.  The SQL# CLI can be found in
66                   mcs/tools/SqlSharp/SqlSharpCli.cs</li>
67                 <li><p><b>SQL# GUI - a GUI tool</b> written in C# to 
68                   execute SQL commands. 
69                   Currently, there is SQL# For GTK# which
70                   can be found at 
71                   mcs/tools/SqlSharp/gui/gtk-sharp  
72                   It has a SQL editor with 
73                   syntax hi lighting of SQL keywords</li>
74                 <li><b>Configuration Command-Line and GUI Tools for ADO.NET</b>.  
75                   These tools have not been started.  The tools would be written in
76                   C# and run on Mono. The
77                   configuration tool can be used to do the following:
78                   <ul> 
79                         <li>setup DSNs for the ODBC and OLE-DB
80                                 providers and configurations for 
81                                 their underlying libraries (unixODBC and libgda)</li>
82                     <li>setup configurations for the Mono.Data.ProviderFactory
83                                 that Brian Ritchie created</li>
84                     <li>setup native database client library configurations too, such as,
85                                 freetds.conf for Microsoft SQL Server and Sybase</li>
86                   </ul>
87                 </li>
88         </ul>
89 </ul>
90         
91 * Current Status
92
93         <p>Variouls ADO.NET Providers have been created: PostgreSQL, MySQL, Sybase, SQL Lite,
94         Microsoft SQL Server, OLE DB, ODBC, and TDS Generic.  See their respective web page for
95         more information.
96                 
97         <p><b>DataSet, DataAdaptor, DataTable, DataRelation, DataRow, DataColumn,
98         DataColumnCollection, DataRowCollection, and others</b> need more work.  There are
99         many classes that are just stubs and need to be implemented.  
100
101         <p><b>XML support in System.Data</b> needs work.  This involves working on
102         the classes: DataSet, XmlDataDocument, and the method ExecuteXmlReader() that
103         exists in a provider's class that implements IDbCommand, and others.
104         Stuart Caborn has started the XML support in a DataSet.  Tim Coleman started
105         XML support in the ExecuteXmlReader() in a SqlCommand.
106         
107         <p><b>ADO.NET Provider Factory</b> has been started by Brian Ritchie.  The 
108         Provider Factory is used to dynamically create
109         connections, commands, parameters, and data adapters based on configuration information.  This
110         provider factory can also provide utility functions needed by a lot of 
111         providers but are not exposed via the provider.
112                 
113         <p><b>Integration with ASP.NET</b> has not been started, such as, data binding
114         to a System.Web.UI.WebControls.DataGrid.  This may involve implementing many classes
115         in System.Web and System.Data.  Gonzalo, Gaurav, Leen, Patrik, Duncan, and others are 
116         working very hard on the ASP.NET support. If you want to help, 
117         contact <a href="mailto:gonzalo@ximian.com">Gonzalo Paniagua Javier</a>
118         
119         <p><b>Integration with Windows.Forms</b> has not been started, such as, data binding 
120         to a System.Windows.Forms.DataGrid.  This may involve implementing many classes
121         in System.Windows.Forms and System.Data.
122         
123         <p><b>Integration with <a href="http://gtk-sharp.sourceforge.net/">GTK#</a></b> 
124         has not been started, such as, data binding
125         to a GtkTreeView.  This may involve creating new classes
126         to go between the glist data model and the ADO.NET data model.
127         Mike Kestner would be the best person to ask for help on GTK#.
128         
129         <p><b>Integration with QT#</b> has not been started.  Any information on 
130         how this can be done is appreciated.  Adam Treat would be the best 
131         person to ask about QT#.
132         
133         <p><b>Integration with GDA#</b> has not been started.  It is 
134         included in the GTK# project, GDA# 
135         does not require GTK+ nor GNOME.  GDA# is C# bindings 
136         to <a href="http://www.gnome-db.org/">GDA</a> which
137         is an ADO/OLE-DB like layer for Linux provided as a C library.  Classes
138         that would bind data between the ADO.NET data model and the GDA data model will
139         need to be created.  Rodrigo Moya is the best person to contact about this.
140         
141         <p><b>Integration with GnomeDb#</b> has not been started.  It is
142         included in the GTK# project and uses GDA# for its data access model.
143         Creating classes to bind data between the data model in ADO.NET 
144         and the data model that exists in GDA# and GnomeDb# will
145         need to be started.  GnomeDb# is C# bindings to
146         <a href="http://www.gnome-db.org/">GnomeDb</a> which uses 
147         <a href="http://www.gnome-db.org/">GDA</a> as its data access layer.  GnomeDb
148         is a C API in a library that contains
149         gtk+ widgets (GUI controls) for data access.  There are some nifty widgets
150         (GUI controls) that can be used, such as, GnomeDbGrid, GnomeDbBrowswer, 
151         GnomeDbSqlEditor, GnomeDbList, GnomeDbLogin, GnomeDbReportEditor, GnomeDbTableEditor, 
152         GnomeDbCombo, and GnomeDbForm.  Rodrigo Moya is the best person to contact.     
153         
154         <p><b>Building System.Data</b>
155         
156         <p>The System.Data.dll gets built with the rest of the class library.
157         To compile the System.Data.dll assembly separately, you need:
158
159         <b>On Unix</b>
160
161         <ul>
162                 * update your mono sources. Be sure you have latest mcs.exe
163                   and .dll's, since there have been many fixes needed for
164                   compilation on Linux.
165
166                 * compile System.Data.dll:
167 <pre>
168  cd mcs/class/System.Data<br>
169  mcs --target library -o \
170     System.Data.dll @list
171 </pre>
172         </ul>
173
174         <b>On Windows</b>
175
176         <ul>
177                 * update your mono sources. Be sure you have latest mcs.exe
178                   and .dll's.  You can use the same method as Linux, 
179                   or you can use NAnt.
180
181                 * To use NAnt:
182
183 <pre>
184  cd mcs/class/System.Data
185  ../../nant/NAnt.exe
186 </pre>
187                         
188                 * This will automatically copy the System.Data.dll to Test.
189                   If you need to do a clean for the System.Data.dll assembly,<br><br>
190
191 <pre>
192  cd mcs/class/System.Data
193  ../../nant/NAnt.exe clean 
194 </pre>
195         </ul>
196