//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
using System.Data.OleDb;
namespace System.Data.OleDb.Test{
public class TestOleDb
{
private OleDbConnection m_cnc;
private TestOleDb ()
{
OleDbCommand cmd;
m_cnc = new OleDbConnection ("Provider=PostgreSQL;Addr=127.0.0.1;Database=rodrigo");
m_cnc.Open ();
Console.WriteLine ("Connected to:");
Console.WriteLine (" Data Source: " + m_cnc.DataSource);
Console.WriteLine (" Database: " + m_cnc.Database);
Console.WriteLine (" Connection string: " + m_cnc.ConnectionString);
Console.WriteLine (" Provider: " + m_cnc.Provider);
Console.WriteLine (" Server version:" + m_cnc.ServerVersion);
/* create temporary table */
Console.WriteLine ("Creating temporary table...");
cmd = new OleDbCommand ("CREATE TABLE mono_test_table ( " +
" name varchar(25), email varchar(50), date_entered timestamp)",
m_cnc);
cmd.ExecuteNonQuery ();
InsertRow ("Mike Smith", "mike@smiths.com");
InsertRow ("Julie Andrews", "julie@hollywood.com");
InsertRow ("Michael Jordan", "michael@bulls.com");
}
void InsertRow (string name, string email)
{
OleDbCommand cmd;
cmd = new OleDbCommand ("INSERT INTO mono_test_table (name, email, date_entered) VALUES ('" +
name + "', '" + email +"', date 'now')", m_cnc);
Console.WriteLine ("Executing command '" + cmd.CommandText + "'");
cmd.ExecuteNonQuery ();
}
void DisplayRow (OleDbDataReader reader)
{
for (int i = 0; i < reader.FieldCount; i++) {
Console.WriteLine (" " + reader.GetDataTypeName (i) + ": " +
reader.GetValue (i).ToString ());
}
}
void TestDataReader ()
{
int i = 0;
string sql = "SELECT * FROM mono_test_table";
Console.WriteLine ("Executing SELECT command...");
OleDbCommand cmd = new OleDbCommand (sql, m_cnc);
OleDbDataReader reader = cmd.ExecuteReader ();
Console.WriteLine (" Recordset description:");
for (i = 0; i < reader.FieldCount; i++) {
Console.WriteLine (" Field " + i + ": " +
reader.GetName (i) + " (" +
reader.GetDataTypeName (i) + ")");
}
Console.WriteLine ("Reading data...");
i = 0;
while (reader.Read ()) {
Console.WriteLine ("Row " + i + ":");
DisplayRow (reader);
i++;
}
reader.Close ();
}
void TestTransaction ()
{
Console.WriteLine ("Starting transaction...");
OleDbTransaction xaction = m_cnc.BeginTransaction ();
Console.WriteLine ("Aborting transaction...");
xaction.Rollback ();
}
void Close ()
{
OleDbCommand cmd = new OleDbCommand ("DROP TABLE mono_test_table", m_cnc);
cmd.ExecuteNonQuery ();
m_cnc.Close ();
}
static void Main (string[] args)
{
try {
TestOleDb test = new TestOleDb ();
test.TestDataReader ();
test.TestTransaction ();
test.Close ();
} catch (Exception e) {
Console.WriteLine ("An error has occured: {0}", e.ToString ());
}
}
}
}
|