Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Morgan <monodanmorg@yahoo.com>2004-04-11 04:26:21 +0400
committerDaniel Morgan <monodanmorg@yahoo.com>2004-04-11 04:26:21 +0400
commit0249cea012a505c1f07d2d6014015ca549831390 (patch)
treec7cd0f47a5e33223d4d784f90d13a38439784e75 /web/postgresql
parent7380b58dec273748f5ef4b40e42f73efbe7cc5c1 (diff)
2004-04-10 Daniel Morgan <danielmorgan@verizon.net>
* ado-net * sqlclient * oracle * postgresql * mysql: clean up Mono ADO.NET web pages * makefile: remove building of obsolete web page tds-providers svn path=/trunk/mono/; revision=25325
Diffstat (limited to 'web/postgresql')
-rw-r--r--web/postgresql397
1 files changed, 79 insertions, 318 deletions
diff --git a/web/postgresql b/web/postgresql
index cbe6c2f87d8..90c3f4f6009 100644
--- a/web/postgresql
+++ b/web/postgresql
@@ -1,16 +1,7 @@
* PostgreSQL and Mono
When it comes to Mono and PostgreSQL, there are many ways
- you can handle your data. You have many Mono Data Providers which can be used
- to access data from a application written for Mono.
- Then there is the future goal of having the ability to host Mono within PostgreSQL to
- have the applications run on the server which makes things much faster.
-
-* Hosting Mono in PostgreSQL
-
- There is a project to <a href="http://gborg.postgresql.org/project/plmono/projdisplay.php">host Mono within PostgreSQL</a>.
-
- plMono is a PostgreSQL language using the embedded Mono runtime. It provides support for writing functions in C#, or any other language that supports .NET.
+ you can access your data.
* Data Providers
@@ -41,19 +32,11 @@
</ul>
</li>
- <li>Mono.Data.PostgreSQL (deprecated)
+ <li>Mono.Data.PostgreSqlClient (DEPRECATED)
<ul>
- <li>included with Mono</li>
-
- <li>Deprecated in favor of Npgsql</li>
-
- <li>Exists in namespace Mono.Data.PostgreSql and assembly Mono.Data.PostgreSql</li>
-
- <li>Is a Mono Data Provider for the <a href="http://www.postgresql.org/">PostgreSQL</a>
- client/server database management system.</li>
- <li>Written in C# and has C# bindings to the PostgreSQL C Client library pq.dll on Windows
- and libpq.so on Linux.</li>
+ <li>Deprecated in favor of Npgsql. No longer included in a release of Mono.</li>
+
</ul>
</li>
@@ -72,8 +55,6 @@
</ul>
- Below, see separate Testing sections for Npgsql and Mono.Data.PostgreSqlClient.
-
** Current Status
<ul>
@@ -102,71 +83,6 @@
</ul>
</li>
- <li>Mono.Data.PostgreSQL status
- <ul>
-
- <li>Deprecated in favor of Npgsql</li>
-
- <li>We are able to do simple CREATE TABLE, DROP TABLE, UPDATE, INSERT, and
- DELETE SQL commands using the ExecuteNonQuery method in PgSqlCommand.</li>
-
- <li>We can execute multiple queries and do a NextResult() in PgSqlDataReader()
- to get the next result set.</li>
-
- <li>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.</li>
-
- <li>We are also able to retrieve data with a simple SELECT SQL query
- using ExecuteReader() which returns a PgSqlDataReader. 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.</li>
-
- <li>We are able to get
- String data (char, character, text, varchar), Int16 (smallint),
- Int32 (integer), Int64 (bigint), DateTime (time, date, timestamp),
- Boolean (boolean), Single (float), and Double (double).
- More data types will come later. Note, the types that do work still
- need thorough testing.</li>
-
- <li>Rows that are returned which contain columns that are NULL are handled now.
- The PgSqlDataReader method IsDBNull() needs to be called to determine
- if a field IS NULL before trying to read data from that field.</li>
-
- <li>Calling PostgreSQL stored procedures works. It does not work perfectly.
- It may not
- even work to specification - yet. If you want to test it yourself, look at
- TestSqlDataReader.cs or PostgresTest.cs in
- mcs/class/System.Data/Test.</li>
-
- <li>Below, I have some sample code you can
- use to call a PostgreSQL stored procedure named "version". This stored
- procedure returns a string containing the PostgreSQL server version. Notice
- the CommandType is StoredProcedure and the method ExecuteScalar() is called.</li>
-
- <li>ExecuteScalar() is a lightweight method in class PgSqlCommand that only returns
- one row and one column as one object - even if there is more than row or column.</li>
-
- <li>We have the beginnings of Parameters support PostgreSQL. Only
- Input Parameters are currently supported. Output, Input/Output,
- and Return parameters still need to be done.</li>
-
- <li>A lot of Exceptions need to be thrown for various exceptions. However,
- PgSqlException, PgSqlErrorCollection, and PgSqlError have been partially
- implemented.</li>
-
- <li>Tim Coleman and Rodrigo Moya got the beginnings of the
- PgSqlDataAdapter/DataSet/DataTable/DataRow to work. Currently,
- the PgSqlDataAdapter can Fill() relational data into a DataTable in a DataSet.
- See the test mcs/class/System.Data/Test/TestSqlDataAdapter.cs to see it in action.</li>
-
- <li>Works in the SQL# command-line version
- and the GTK# version on Linux. It only works in SQL# command-line version
- on Windows.</li>
-
- </ul>
- </li>
-
</ul>
** Action Plan
@@ -187,54 +103,94 @@
in gborg.postgresql.org's cvs will be used to update the Npgsql source in
Mono's cvs.
</li>
-
- <li>Mono.Data.PostgreSqlClient even though deprecated can still
- accept bug fixes. This is because other areas, such as, ASP.NET examples
- may still use this provider.</li>
-
+
<li>Add any missing functionality to Npgsql. If this funtionality works on
.NET but not on Mono, implement the missing features or fix the bugs in Mono</li>
- <li>Npgsql has replaced Mono.Data.PostgreSqlClient as the provider of
- choice to use. However, Mono.Data.PostgreSqlClient will remain in a
- deprecated state until nobody uses it anymore - then it can be removed</li>
+ <li>Npgsql has been replaced Mono.Data.PostgreSqlClient as the provider of
+ choice to use. Mono.Data.PostgreSqlClient is deprecated and is no longer included in
+ Mono releases. Please use Npgsql for PostgreSQL data access.</li>
- <li>Implement more of PostgreSQL 7.3 features in Npgsql</li>
+ <li>Implement new features of PostgreSQL.</li>
</ul>
-** Testing Mono.Data.PostgreSqlClient
+</ul>
- <ul>
- * <p>In order to test Mono.Data.PostgreSqlClient, you will need to have
- access to a remote PostgreSQL DBMS, or you will have to install
- one locally. PostgreSQL was the first ADO.NET provider created in Mono.
-
- <p>Why use PostgreSQL? Because it is free software, has a client
- library that is easy to use, PostgreSQL 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.
+** Testing Npgsql
+
+<ul>
+ <li>Have a working mono and mcs</li>
- <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).
+ <li>Get <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>
+ and make sure the binary assembly Npgsql.dll is installed in the same place that the
+ mono class libraries are located.
- <p>The System.Data tests use this connection string to connect
- to the PostgreSQL database named "test" at host "localhost" as
- user "postgres".
-
+ <li>C# Example for Npgsql:
<pre>
-"Server=localhost;Database=test;User ID=postgres;Password=fun2db"
- (or)
-"host=localhost;dbname=test;user=postgres;password=fun2db"
+ using System;
+ using System.Data;
+ using Npgsql;
+
+ public class Test
+ {
+ public static void Main(string[] args)
+ {
+ string connectionString =
+ "Server=localhost;" +
+ "Database=test;" +
+ "User ID=postgres;" +
+ "Password=fun2db;";
+ IDbConnection dbcon;
+ dbcon = new NpgsqlConnection(connectionString);
+ dbcon.Open();
+ IDbCommand dbcmd = dbcon.CreateCommand();
+ // requires a table to be created named employee
+ // with columns firstname and lastname
+ // such as,
+ // CREATE TABLE employee (
+ // firstname varchar(32),
+ // lastname varchar(32));
+ string sql =
+ "SELECT firstname, lastname " +
+ "FROM employee";
+ dbcmd.CommandText = sql;
+ IDataReader reader = dbcmd.ExecuteReader();
+ while(reader.Read()) {
+ string FirstName = (string) reader["firstname"];
+ string LastName = (string) reader["lastname"];
+ Console.WriteLine("Name: " +
+ FirstName + " " + LastName);
+ }
+ // clean up
+ reader.Close();
+ reader = null;
+ dbcmd.Dispose();
+ dbcmd = null;
+ dbcon.Close();
+ dbcon = null;
+ }
+ }
+</pre>
+ </li>
+ <li>Building C# Example:
+ <ul>
+ <li>Save the example to a file, such as, TestExample.cs</li>
+<pre>
+ mcs TestExample.cs -r System.Data.dll \
+ -r Npgsql.dll
+</pre>
+ </ul>
+ </li>
+ <li>Running the Example:
+<pre>
+mono TestExample.exe
</pre>
+</li>
</ul>
-
- <p>Installation instructions for PostgreSQL DBMS:
- <b>On Unix</b>
+
+** Installation instructions for PostgreSQL DBMS:
+ <p><b>On Unix</b>
<ul>
* Read the PostgreSQL Installation Instructions
@@ -406,199 +362,4 @@ create user postgres with password 'fun2db';
without having to change the database, userid, etc.
</ul>
- <p>In the path mcs/class/System.Data/Test
- there is a test for Mono.Data.PostgreSqlClient named
- PostgreTest.cs. Thanks goes to Gonzalo for creating the original
- PostgreSQL test.
-
- <p>
- To compile the PostgresTest.cs program, do:
-
- <p>
-<pre>
- mcs PostgresTest.cs \
- -r System.Data.dll \
- -r Mono.Data.PostgreSqlClient.dll
-</pre>
-
- <p>If there are compile errors, such as, can not convert IDbConnection
- to PgSqlConnection, then you need to run mcs like:
-
-<pre>
- mono C:/cygwin/home/MyHome/mono/install/bin/mcs.exe \
- PostgresTest.cs \
- -r System.Data.dll \
- -r Mono.Data.PostgreSqlClient.dll
-</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>C# Example for Mono.Data.PostgreSqlClient:
-<pre>
- using System;
- using System.Data;
- using Mono.Data.PostgreSqlClient;
-
- public class Test
- {
- public static void Main(string[] args)
- {
- string connectionString =
- "Server=localhost;" +
- "Database=test;" +
- "User ID=postgres;" +
- "Password=fun2db;";
- IDbConnection dbcon;
- dbcon = new PgConnection(connectionString);
- dbcon.Open();
- IDbCommand dbcmd = dbcon.CreateCommand();
- // requires a table to be created named employee
- // with columns firstname and lastname
- // such as,
- // CREATE TABLE employee (
- // firstname varchar(32),
- // lastname varchar(32));
- string sql =
- "SELECT firstname, lastname" +
- "FROM employee";
- dbcmd.CommandText = sql;
- IDataReader reader = dbcmd.ExecuteReader();
- while(reader.Read()) {
- string FirstName = (string) reader["firstname"];
- string LastName = (string) reader["lastname"];
- Console.WriteLine("Name: " +
- FirstName + " " + LastName);
- }
- // clean up
- reader.Close();
- reader = null;
- dbcmd.Dispose();
- dbcmd = null;
- dbcon.Close();
- dbcon = null;
- }
- }
-</pre>
- </li>
- <li>Building C# Example:
- <ul>
- <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.PostgreSqlClient.dll
-</pre>
- </li>
- <li>Build on Windows via Cygwin:
-<pre>
- 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.PostgreSqlClient.dll
-</pre>
- </li>
- </ul>
- </li>
- <li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-</li>
-</ul>
-** Testing Npgsql
-
-<ul>
- <li>Have a working mono and mcs</li>
-
- <li>Get <a href="http://gborg.postgresql.org/project/npgsql/projdisplay.php">Npgsql</a>
- and make sure the binary assembly Npgsql.dll is installed in the same place that the
- mono class libraries are located.
-
- <li>Read the Testing notes for Mono.Data.PostgreSqlClient too
-
- <li>C# Example for Npgsql:
-<pre>
- using System;
- using System.Data;
- using Npgsql;
-
- public class Test
- {
- public static void Main(string[] args)
- {
- string connectionString =
- "Server=localhost;" +
- "Database=test;" +
- "User ID=postgres;" +
- "Password=fun2db;";
- IDbConnection dbcon;
- dbcon = new NpgsqlConnection(connectionString);
- dbcon.Open();
- IDbCommand dbcmd = dbcon.CreateCommand();
- // requires a table to be created named employee
- // with columns firstname and lastname
- // such as,
- // CREATE TABLE employee (
- // firstname varchar(32),
- // lastname varchar(32));
- string sql =
- "SELECT firstname, lastname " +
- "FROM employee";
- dbcmd.CommandText = sql;
- IDataReader reader = dbcmd.ExecuteReader();
- while(reader.Read()) {
- string FirstName = (string) reader["firstname"];
- string LastName = (string) reader["lastname"];
- Console.WriteLine("Name: " +
- FirstName + " " + LastName);
- }
- // clean up
- reader.Close();
- reader = null;
- dbcmd.Dispose();
- dbcmd = null;
- dbcon.Close();
- dbcon = null;
- }
- }
-</pre>
- </li>
- <li>Building C# Example:
- <ul>
- <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 Npgsql.dll
-</pre>
- </li>
- <li>Build on Windows via Cygwin:
-<pre>
- 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 Npgsql.dll
-</pre>
- </li>
- </ul>
- </li>
- <li>Running the Example:
-<pre>
-mono TestExample.exe
-</pre>
-</li>
-</ul>
-