* 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>.
+<p>Mono's ADO.NET Developers:
-* Action plan
+<table border=1>
- The current plan to implement ADO.NET is as follows:
+<tr>
+ <td><b>Developer</b></td>
+ <td><b>Email</b></td>
+ <td><b>Contribution</b></td>
+</tr>
- <b>Step 1:</b> SqlClient:
+<tr>
+ <td>Rodrigo Moya</td>
+ <td>rodrigo -AT-<br> ximian.comNOSPAM</td>
+ <td>ADO.NET coordinator,<br> OLE DB provider,<br> and tests</td>
+</tr>
- <ul>
- * Implementation of System.Data.SqlClient based on
- the <a href="http://www.postgresql.org/idocs/">PostgreSQL C API</a>
+<tr>
+ <td>Daniel Morgan</td>
+ <td>danmorg -AT-<br> sc.rr.comNOSPAM</td>
+ <td>MySQL, PostgreSQL, <br>Oracle providers,<br> and tests</td>
+</tr>
- * Once the <a href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdatasqlclient.asp?frame=true">System.Data.SqlClient</a>
- code is functional and is usable by other people, we willl move it to
- System.Data.PostgreSQL, and will convert the existing
- System.Data.SqlClient to be just a wrapper around
- System.Data.PostgreSQL.
+<tr>
+ <td>Tim Coleman</td>
+ <td>tim -AT- <br>timcoleman.comNOSPAM</td>
+ <td>Microsoft SQL Server, <br>Sybase, <br>TDS providers,<br> Oracle,
+ <br>and tests.<br>
+ He has
+ contributed <br>to other parts <br>of Mono too, <br>such as,
+ <br>EnterpriseServices,
+ XML, <br>and WebServices.</td>
+</tr>
- </ul>
+<tr>
+ <td>Brian Ritchie</td>
+ <td>brianlritchie -AT-<br> hotmail.comNOSPAM</td>
+ <td>ODBC provider <br>and the ProviderFactory <br>in Mono.Data</td>
+</tr>
- <b>Step 2:</b> <a href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDataOleDb.asp?frame=true">System.Data.OleDb</a> Provider:
-
- <ul>
- * On Unix systems: System.Data.OleDb will use the
- <a href="http://www.gnome-db.org/">LibGDA</a>
- engine.
+<tr>
+ <td>Vladimir Vukicevic</td>
+ <td>vladimir -AT-<br> pobox.comNOSPAM</td>
+ <td>SQL Lite provider. <br> He has contributed to GTK# <br>and mPhoto too.</td>
+</tr>
- LibGDA is a data access engine like ADO/OLE-DB, but for Unix. It is
- used by Gnome-Db and libgnomedb. There is work under way to get libgda
- working under Windows by the Gnome-Db developers.
+<tr>
+ <td>Christopher Bockner</td>
+ <td>cleared -AT-<br> rogers.comNOSPAM</td>
+ <td>IBM DB2 Universal <br>Database provider</td>
+</tr>
- * On Windows systems: System.Data.OleDb will use OLE-DB as
- its engine. It may have the option of using libgda too.
- </ul>
+<tr>
+ <td>Ville Palo</td>
+ <td>vi64pa -AT-<br> koti.soon.fiNOSPAM</td>
+ <td>XML stuff <br>in System.Data <br>including DataSet <br>
+ and XmlDataDocument, <br>and tests</td>
+</tr>
- <b>Step 3:</b> <a href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemdatasqlclient.asp?frame=true">System.Data.SqlClient</a> Provider:
+<tr>
+ <td>Gonzalo Paniagua Javier</td>
+ <td>gonzalo -AT-<br> ximian.comNOSPAM</td>
+ <td>Integration between <br>System.Web and <br>System.Data</td>
+</tr>
- <ul>
- * <p>System.Data.SqlClient will then become a managed
- provider for Microsoft SQL Server, both on Windows and
- Linux, to be compatible with applications written
- for the Microsoft .NET Development Framework.
-
- <p>Once Step 1 has been completed and the PostgreSQL
- provider support has been moved to its own place at
- System.Data.PostgreSQL, we will use
- <a href="http://www.freetds.org/">FreeTDS</a> as the basis
- for providing access to Microsoft SQL Server databases.
-
- FreeTDS is a C API for Unix and Windows that implements
- the TDS (Tabular Data Stream) protocol used in accessing
- Microsoft SQL Server and Sybase databases.
- </ul>
+<tr>
+ <td>Gaurav Vaish</td>
+ <td>gvaish -AT-<br> iitk.ac.inNOSPAM</td>
+ <td>Web controls</td>
+</tr>
+
+<tr>
+ <td>Phillip Jerkins</td>
+ <td>Phillip.Jerkins -AT-<br> morgankeegan.comNOSPAM</td>
+ <td>Named Instance support <br>in System.Data.SqlClient</td>
+</tr>
+
+</table>
+
+** Bugs and Feature Requests
- <b>Step 4:</b> <a href="http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/668/msdncompositedoc.xml&frame=true">System.Data.Odbc</a> Provider:
+<ul>
+
+ <li>Bugs with Mono or any data provider in Mono should be reported
+ in Mono's Bugzilla <a href="http://bugzilla.ximian.com/">here</a>. If you
+ do not have a Bugzilla user account, it is free
+ and easy to create
+ one <a href="http://bugzilla.ximian.com/createaccount.cgi">here</a>.</li>
- <ul>
- * We will create a .NET Managaed Provider for ODBC
- in System.Data.Odbc for those using ODBC.
- On Unix and Windows, <a href="http://www.unixodbc.org/">unixODBC</a> will be used.
-
- unixODBC works on Unix and Windows. Providers exist for
- Oracle, Microsoft SQL Server and Sybase via FreeTDS,
- MySQL, PostgreSQL, IBM DB2, Interbase, and others.
+ <li>Any RFE (Request For Enhancement) for features missing or new functionality
+ should be entered as a bug in Bugzilla too</li>
+
+</ul>
+
+** ADO.NET Data Providers
+
+<p>List of ADO.NET Data Providers working in Mono:
+
+<ul>
+ <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>
+</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>
+</ul>
+
+<p>External Projects that have created ADO.NET Providers that work on Mono:
+
+<ul>
+
+ <li><a href="http://www.go-mono.com/firebird.html">Firebird Interbase</a></li> is a
+ Firebird SQL Managed data provider. It can be used with Interbase databases too. It
+ is written in 100%C# and does not require a client library. Works on .NET and Mono.</a>
+ <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 .NET and Mono</li>
+ <li><a href="http://sourceforge.net/projects/mysqlnet/">MySQLNet</a> is a
+ MySQL Managed data provider written in 100% C#, does not
+ require a client library, and works on .NET and Mono</li>
+</ul>
+
+** Tools
+
+<p>Some tools that can be used for ADO.NET and other technologies (ASP.NET, XML, etc).
+
+<ul>
+ <li><b>SQL# CLI</b> - a SQL query tool with a command-line interface.
+ It can be used to enter and execute SQL statements or
+ execute a batch of SQL commands from a file. It can
+ be used to test connection strings, connect to various ADO.NET
+ providers, save output to text, html, or xml. It is a work-in-progress.
+ The SQL# CLI is distributed with the
+ Mono runtime and class libraries as an executable assembly sqlsharp.exe.
+ The source to SQL# CLI can be found in the mcs source at
+ mcs/tools/SqlSharp/SqlSharpCli.cs
+ </li>
- </ul>
+ <li><p><b>SQL# GUI - a graphical SQL query tool</b> allows a user
+ to enter SQL commands in a top panel which is a text editor. 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).
+ Also, the bottom panel would allow logging of SQL command executed.
+ Currently, there is a <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. SQL# For GTK#
+ is a work-in-progress and can be found in the mcs source at
+ mcs/tools/SqlSharp/gui/gtk-sharp</li>
+</ul>
- <b>Step 5:</b> Other System.Data providers:
+<p>Tools we would like to have, but they have not been created yet:
- <ul>
- * The idea in Microsoft .NET System.Data seems to be to have
- a managed provider for each supported DBMS. So, apart
- from System.Data.OleDb (generic) and System.Data.SqlClient,
- we'll need to have System.Data.MySQL,
- System.Data.Oracle, and System.Data.PostgreSQL. Others,
- of course, are welcomed.
- </ul>
+<ul>
+ <li><b>XML Schema Definition tool</b> <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconxmlschemadefinitiontoolxsdexe.asp">xsd.exe</a> needs
+ to be created. Maybe this TODO item should be at the System.XML web page instead.
+
+ <ul>
+ <li>This tool
+ would work like the xsd.exe tool included with
+ the .NET Framework. The Xsd.exe tools has the\r
+ following uses:\r
+ <ul>\r
+ <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>XML to XSD</b> - used to generate an XML schema from an XML file</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
+ <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>
+
+** Extra Classes in Mono ADO.NET
+
+ <p>An ADO.NET <a href="http://www.go-mono.com/provider-factory.html">Provider Factory</a>
+ was created by Brian Ritchie. The
+ Provider Factory is a way to dynamically create
+ connections, commands, parameters, and data adapters based on configuration
+ information.
-* Current Status
+** Current Status
- <p>We are still working on Step 1, but we are planning the other steps.
+ <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>We are able to do simple CREATE TABLE, DROP TABLE, UPDATE, INSERT, and
- DELETE SQL commands using the ExecuteNonQuery method in SqlCommand.
+ <p><b>Constraints</b> need lots of work
- <p>We are also able to do simple aggregate functions,
- ie, count(), sum(), min(), and max()
- in a simple SELECT SQL query using the ExecuteScalar() now.
+ <p><b>XML Schema Definition tool</b> xsd.exe that is included
+ in the .NET Framework has not been created for Mono
- <p>We are also able to retrieve data with a simple SELECT SQL query
- using ExecuteReader() which returns a SqlDataReader. We are able to
- use GetSchemaTable() to get the meta data about the table columns.
- We are able to Read() to get each row from the result set. We are able to get
- String data (char, bpchar (character), text, varchar), Int16 (int2 or smallint),
- Int32 (int4 or integer), Int64 (int8 or bigint), DateTime (time, date, timestamp),
- Boolean (boolean), Single (float), and Double (double).
- Other More data types will follow later on.
+ <p><b>TypeDataSetGenerator</b> needs to be stubbed and implemented.
- <p>Parameters and stored procedures have not been tested and most likely
- do not work yet.
+ <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>:
+ <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>A lot of functionality in System.Data is missing, but the
- infrastructure is starting to come together.
+ <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>Need help on the DataSet/DataAdaptor/DataTable/DataRelation/XML
- functionality so we can integrate with
- the ASP.NET controls and Windows.Forms.
+ <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>Need to add XML support in System.Data.
+ <p><b>Integration with QT#</b> has not been started. Any information on
+ how this can be done is appreciated. Adam Treat would be the best
+ person to ask about QT#.
- <p>To compile that test program, you need:
+ <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 Linux</b>
+ <b>On Unix</b>
<ul>
* update your mono sources. Be sure you have latest mcs.exe
compilation on Linux.
* compile System.Data.dll:
-
- cd mcs/class/System.Data
- mcs --target library -o System.Data.dll @list
+<pre>
+ cd mcs/class/System.Data<br>
+ mcs --target library -o \
+ System.Data.dll @list
+</pre>
</ul>
-* Testing
-
- <p>In order to test System.Data.SqlClient, you will need to have
- access to a remote PostgreSQL DBMS, or you will have to install
- one locally. PostgreSQL is the DBMS used for the initial
- implementation of System.Data.SqlClient.
-
- <p>Why? Because it is open source, has a client
- library that is easy to use, PostgreSQL on Windows is easy to install on
- Unix and Windows (using the Cygwin install program), not difficult to setup after
- installation, and it runs under: Linux,
- Windows (via cygwin and ipc-daemon), Unix, and
- others. This allowed us to create the
- System.Data functionality in Mono much quicker.
-
- <p>If you plan on using a remote PostgreSQL DBMS Server,
- than you will need to have the PostgreSQL client software on your
- local computer that includes libpq.so (pq.dll on Windows).
-
- <p>Installation instructions for PostgreSQL DBMS:
-
- <b>On Linux</b>
+ <b>On Windows</b>
<ul>
- * TODO
-
- * It easier to install PostgreSQL on Linux than Windows.
- </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.
- <b>On Windows</b>
+ * To use NAnt:
- <ul>
- * Use the <a href="http://www.cygwin.com/">Cygwin</a> installer to install the PostgreSQL DBMS. It is
- found in the database category.
-
- * <p>Read the file postgres-x.x.README at /usr/doc/Cygwin and read
- the requirements to install PostgreSQL. Those requirements
- are included with cygwin except cygipc. A default installtion
- of cygwin does not install everything you will need, so on the
- safe side, just include everything when installing cygwin.
-
- * <p>The -x.x in postgres-x.x is the version of your PostgreSQL DBMS.
-
- * <p>Once Cygwin has installed the PostgreSQL DBMS on your computer,
- read the file FAQ_MSWIN which is available
- in /usr/doc/postgres-x.x
-
- * <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>The cygipc package contains the ipc-daemon you will need
- to run before you can
- run the PostgreSQL DBMS Server daemon (postmaster) or run
- initdb which initializes the PostgreSQL database.
-
- <p><b>3.</b> The Cygwin bin directory has to be placed in
- the path before the Windows program directories,
- for example, C:\cygwin\bin
-
- My own note, in the Windows control panel, I set
- the environment variables PATH to my cygwin /usr/local/bin,
- /usr/bin, and /bin. I also set my LD_LIBRARY_PATH to
- /usr/local/lib and /usr/lib. For example:
-
- <p>
-<pre>
-PATH=c:\cygwin\usr\local\bin;c:\cygwin\usr\bin;c:\cygwin\bin;
-LD_LIBRARY_PATH=c:\cygwin\usr\local\lib;c:\cygwin\usr\lib;
-</pre>
-
- <p><b>4.</b> Start the ipc-daemon that came with the cygipc package. There
- are two ways to do this: run it from the command line as:
-
- <p>
-<pre>
-ipc-daemon &
-</pre>
- <p>or you can set it up as a Windows service. See the
- file cygrunsrv.README at /usr/doc/Cygwin on how to do this
- for ipc-daemon and postmaster. Note the
- troubleshooting section at the end of
- the cygrunsrv.README file.
-
- <p>To install ipc-daemon as a service,
- you just have to run
-
- <p>
-<pre>
-ipc-daemon --install-as-service' (--remove-as-service)
-</pre>
-
- <p>and then run
-
-<pre>
-net start ipc-daemon
-</pre>
- </ul>
-
- <p>Read the installation.html file
- at /usr/doc/postgresql-x.x/html/installation.html
-
- <p>You will see in this file that you will need to
- run the following commands:
-
- <p>
<pre>
-mkdir /usr/local/pgsql/data\r
-initdb -D /usr/local/pgsql/data\r
-postmaster -D /usr/local/pgsql/data >logfile 2>&1 &\r
-createdb test\r
-psql test
+ cd mcs/class/System.Data
+ ../../nant/NAnt.exe
</pre>
-
- <p>When you need to connect to the database,
- you will need ipc-daemon and postmaster running. Start ipc-daemon
- before any of the command above.
-
- <p>psql is a command-line PostgreSQL client tool to
- enter and run SQL commands and queries.
-
- <p>If there is no database user named postgres, create a user named
- postgres with the following SQL command in the client tool psql:
-
- <p>
+
+ * 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>
-psql test
-create user postgres with password 'fun2db';
+ cd mcs/class/System.Data
+ ../../nant/NAnt.exe clean
</pre>
- <p>The only reason I say this is so you can easily use the System.Data tests
- without having to change the database, userid, etc.
</ul>
+
+** Testing
+
+<ul>
+ <li>Testing connection-oriented classes are done
+ via the provider specific tests
+ found in the mcs source at mcs/class</br>
+ <table border=1>
+ <tr>
+ <td><b>Name</b></td>
+ <td><b>Assembly /</br> Namespace</b></td>
+ <td><b>Test</b></td>
+ </tr>
+
+ <tr>
+ <td>Microsoft</br> SQL</br> Server</br></td>
+ <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>
+ </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>
+ </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>
+ </tr>
+
+ </table>
- <p>In the path mcs/class/System.Data/Test
- there is a PostgreSQL test program 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>
-<pre>
-dbname is the database, ie, test
-host is the hostname of the PostgreSQL DBMS Server to connect to
-user is the username, ie, someuser
-password is the password, ie, mypass1234
-</pre>
-
- <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.
+ <li><a href="http://www.go-mono.com/testing.html">Testing non-connection classes</a> are
+ done via mono's modified version of NUnit.
+ <ul>
+ <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>
+ </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>
+ </ul>
+ </li>
+ </ul>
+ </li>
+
+</ul>
- <p>
- To compile the PostgresTest.cs program, do:
-
- <p>
-<pre>
-mcs PostgresTest.cs -r System.Data
-</pre>
-
- <p>
- To run using mint, do:
-
- <p>
-<pre>
-mint PostgresTest.exe
-</pre>
-
- <p>
- To run using mono, do:
-<pre>
-mono PostgresTest.exe
-</pre>
-
- <p>You should get something like:
-
-<p>
-<pre>
- Administrator@DANPC ~/mono/mcs/class/System.Data/Test\r
- $ mcs PostgresTest.cs -r System.Data\r
-\r
- Administrator@DANPC ~/mono/mcs/class/System.Data/Test\r
- $ mint PostgresTest.exe\r
- Postgres provider specific tests...\r
-\r
- Drop table:\r
- Error (don't worry about this one)\r
- Create table with all supported types:\r
- OK\r
- Insert values for all known types:\r
- OK\r
- Select values from the database:\r
- Get Schema.\r
- dt.Columns.Count: 6\r
- * Column Name: int2_value\r
- MaxLength: 2\r
- Type: System.Int16\r
- * Column Name: int4_value\r
- MaxLength: 4\r
- Type: System.Int32\r
- * Column Name: bigint_value\r
- MaxLength: 8\r
- Type: System.Int64\r
- * Column Name: char_value\r
- MaxLength: -1\r
- Type: System.String\r
- * Column Name: varchar_value\r
- MaxLength: -1\r
- Type: System.String\r
- * Column Name: text_value\r
- MaxLength: -1\r
- Type: System.String\r
- Row 0:\r
- Col 0: int2_value - -22\r
- Col 1: int4_value - 1048000\r
- Col 2: bigint_value - 123456789012345\r
- Col 3: char_value - This is a char\r
- Col 4: varchar_value - This is a varchar\r
- Col 5: text_value - This is a text\r
- Rows: 1\r
- Clean up...\r
- Drop table...\r
- OK\r
-</pre>\r
-\r