6 <li>Today, our goal is to be compatible with .NET 1.1 and .NET 1.0. We also would like
7 to extend data access beyond what is included with .NET 1.0 and .NET 1.1,
8 such as, include access to more databases, such as, PostgreSQL and MySQL,
9 but also provide classes that help in creating data source-agnostic code, such as,
10 Mono.Data.ProviderFactory.</li>
12 <li>In the future, we would like to be compatible with .NET 1.2. This includes features
13 like <a href="http://longhorn.msdn.microsoft.com/lhsdk/ndp/daconworkingwithobjectspacesarchitecture.aspx">ObjectSpaces</a></li>
17 ** Bugs and Feature Requests
21 <li>Bugs with Mono or any data provider in Mono should be reported
22 in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>. If you
23 do not have a Bugzilla user account, it is free
25 one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
27 <li>Any requests for new features or missing functionality
28 can entered as a bug in Bugzilla too</li>
32 ** ADO.NET Data Providers
34 <p>Mono has many ADO.NET Data Providers to get you connected:
37 <li><a href="http://www.go-mono.com/ibmdb2.html">IBM DB2 Universal Database</a></li>
38 <li><a href="http://www.go-mono.com/mysql.html">MySQL</a></li>
39 <li><a href="http://www.go-mono.com/odbc.html">ODBC</a></li>
40 <li><a href="http://www.go-mono.com/oracle.html">Oracle</a></li>
41 <li><a href="http://www.go-mono.com/oledb.html">OLE DB</a></li>
42 <li><a href="http://www.go-mono.com/postgresql.html">PostgreSQL</a></li>
43 <li><a href="http://www.go-mono.com/sqlclient.html">Microsoft SQL Server</a></li>
44 <li><a href="http://www.go-mono.com/sqlite.html">SQL Lite</a></li>
45 <li><a href="http://www.go-mono.com/sybase.html">Sybase</a></li>
46 <li><a href="http://www.go-mono.com/tdsclient.html">Older Microsoft SQL Server and Sybase databases</a></li>
49 <p>External Projects that have created ADO.NET Providers that work on Mono:
53 <li><a href="http://www.go-mono.com/firebird.html">Firebird Interbase</a></li> is a
54 Firebird SQL Managed data provider. It can be used with Interbase databases too. It
55 is written in 100%C# and does not require a client library. Works on .NET and Mono.</a>
56 <li><a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a> is a
57 PostgreSQL Managed data provider written
58 in 100% C#, does not require a client library, and works on .NET and Mono</li>
59 <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a
60 MySQL Managed data provider written in 100% C#, does not
61 require a client library, and works on .NET and Mono</li>
66 <p>Some tools that can be used for ADO.NET and other technologies (ASP.NET, XML, etc).
71 <li>SQL# is a command line query tool included with Mono to enter and execute SQL statements</li>
76 <li>XML Schema Definition tool</li>
78 <li><b>XDR to XSD</b> - used to generate an XML schema from an XDR (XML Data Reduced schema) file.
79 XDR was used by Microsoft prior to XSD becoming a W3C recommendation. So, this needs
80 to be supported for legacy reasons</li>
81 <li><b>XML to XSD</b> - used to generate an XML schema from an XML file</li>
82 <li><b>XSD to DataSet</b> - used to generate DataSet classes from an XSD schema file. The
83 DataSet classes created can then be used with XML data</li>
84 <li><b>XSD to Classes</b> - used to generate classes from an XSD schema file. The
85 classes created can be used with System.XML.Serialization.XMLSerializer
86 to read and write XML code that follows the schema</li>
87 <li><b>Classes to XSD</b> - used to generate an XML schema
88 from type(s) in a assembly file. The
89 XML schema created by the tool defines the XML format used
90 by System.XML.Serialization.XMLSerializer</li>
97 ** Extra Classes in Mono ADO.NET
99 <p>An ADO.NET <a href="http://www.go-mono.com/provider-factory.html">Provider Factory</a>
100 was created by Brian Ritchie. The
101 Provider Factory is a way to dynamically create
102 connections, commands, parameters, and data adapters based on configuration
105 ** Database Access from ASP.NET
107 <li>Take a look at xsp in cvs and look at the examples in test: dbpage1.aspx
110 <li>Notice that the namespace System.Data is imported via <b>import</b></li>
111 <li>A NameValueCollection is gotten using ConfigurationSettings.AppSetings. These
112 settings are gotten from the file server.exe.config which is a XML file. The XML
113 file has a section appSettings. In the appSettings section, you have keys
114 for DBProviderAssembly, DBConnectionType, and DBConnectionString.
116 <li><b>DBProviderAssembly</b> is the assembly of the ADO.NET provider.
119 <li><b>DBConnectionType</b> is the System.Type of the class that
120 implements System.Data.IDbConnection that is found
121 in the DBProviderAssembly.
123 "ByteFX.Data.MySqlConnection"</li>
124 <li><b>DBConnectionString</b> is the ConnectionString to set to the
125 IDbConnection object to use in opening a connection to a data source.
127 "hostaddr=127.0.0.1;user=monotest;password=monotest;dbname=monotest"</li>
129 <li>The function GetConnectionData() gets the database provider assembly, connection type,
130 and connection string parameters if they exist; otherwise, it uses default values. This is
131 done during the loading of the web page.</li>
132 <li>With the connection parameters, the assembly is loaded, the connection type is verified that
133 it implements IDbConnection and an instance of the class can be created, creates a instance
134 of the class, sets the connection string, and opens the connection.</li>
142 <li>Testing connection-oriented classes are done
143 via the provider specific tests
144 found in the mcs source at mcs/class</br>
148 <td><b>Assembly /</br> Namespace</b></td>
153 <td>Microsoft</br> SQL</br> Server</br></td>
154 <td>System.Data /</br> System.Data.SqlClient</td>
155 <td>SqlTest.cs at</br> System.Data/Test</td>
159 <td>PostgreSQL</br> (Npgsql)</td>
160 <td>Npgsql /</br> Npgsql</td>
161 <td>*.cs at</br> Npgsql/Test</td>
165 <td>Oracle</br> (Mono)</td>
166 <td>System.Data.OracleClient /</br> System.Data.OracleClient</td>
167 <td>TestOracleClient.cs at</br> System.Data.OracleClient/Test</td>
171 <td>ODBC</br> (Mono)</td>
172 <td>System.Data.Odbc /</br> System.Data</td>
173 <td>OdbcTest.cs (to connect to MS SQL Server)at</br> System.Data/Test</td>
179 <li><a href="http://www.go-mono.com/testing.html">Testing non-connection classes</a> are
180 done via mono's modified version of NUnit.
182 <li>To run all the NUnit tests for Mono, you need the mcs source. cd to the root
183 of the mcs source. To run it:
188 <li>If you just want to run the NUnit tests for System.Data, you would cd into
189 the mcs source at class/System.Data/Test and run it: