e54d5c0e5898cf2f6a23c3b272542c7131ccddc2
[mono.git] / mcs / class / System.Data / System.Data.OleDb / TestOleDb.cs
1 using System;
2 using System.Data.OleDb;
3
4 namespace System.Data.OleDb.Test
5 {
6         public class TestOleDb
7         {
8                 private OleDbConnection m_cnc;
9
10                 private TestOleDb ()
11                 {
12                         OleDbCommand cmd;
13                         
14                         m_cnc = new OleDbConnection ("PostgreSQL");
15                         m_cnc.Open ();
16
17                         Console.WriteLine ("Creating temporary table...");
18                         cmd = new OleDbCommand ("CREATE TABLE mono_test_table ( " +
19                                                 " name varchar(25), email varchar(50), date_entered timestamp)",
20                                                 m_cnc);
21                         cmd.ExecuteNonQuery ();
22                         InsertRow ("Mike Smith", "mike@smiths.com");
23                         InsertRow ("Julie Andrews", "julie@hollywood.com");
24                         InsertRow ("Michael Jordan", "michael@bulls.com");
25                 }
26
27                 void InsertRow (string name, string email)
28                 {
29                         OleDbCommand cmd;
30
31                         cmd = new OleDbCommand ("INSERT INTO mono_test_table (name, email, date_entered) VALUES ('" +
32                                                 name + "', '" + email +"', date 'now')", m_cnc);
33                         Console.WriteLine ("Executing command '" + cmd.CommandText + "'");
34                         cmd.ExecuteNonQuery ();
35
36                 }
37                 
38                 void DisplayRow (OleDbDataReader reader)
39                 {
40                         for (int i = 0; i < reader.FieldCount; i++) {
41                                 Console.WriteLine (" " + reader.GetDataTypeName (i) + ": " +
42                                                    reader.GetValue (i).ToString ());
43                         }
44                 }
45                 
46                 void TestDataReader ()
47                 {
48                         int i = 0;
49                         string sql = "SELECT * FROM mono_test_table";
50                         
51                         Console.WriteLine ("Executing SELECT command...");
52                         OleDbCommand cmd = new OleDbCommand (sql, m_cnc);
53                         OleDbDataReader reader = cmd.ExecuteReader ();
54
55                         Console.WriteLine (" Recordset description:");
56                         for (i = 0; i < reader.FieldCount; i++) {
57                                 Console.WriteLine ("  Field " + i + ": " +
58                                                    reader.GetName (i) + " (" +
59                                                    reader.GetDataTypeName (i) + ")");
60                         }
61
62                         Console.WriteLine ("Reading data...");
63                         i = 0;
64                         while (reader.Read ()) {
65                                 Console.WriteLine ("Row " + i + ":");
66                                 DisplayRow (reader);
67                                 i++;
68                         }
69                 }
70
71                 void TestTransaction ()
72                 {
73                         Console.WriteLine ("Starting transaction...");
74                         OleDbTransaction xaction = m_cnc.BeginTransaction ();
75
76                         Console.WriteLine ("Aborting transaction...");
77                         xaction.Rollback ();
78                 }
79                 
80                 void Close ()
81                 {
82                         OleDbCommand cmd = new OleDbCommand ("DROP TABLE mono_test_table", m_cnc);
83                         cmd.ExecuteNonQuery ();
84                         m_cnc.Close ();
85                 }
86
87                 static void Main (string[] args)
88                 {
89                         try {
90                                 TestOleDb test = new TestOleDb ();
91                                 test.TestDataReader ();
92                                 test.TestTransaction ();
93                                 test.Close ();
94                         } catch (Exception e) {
95                                 Console.WriteLine ("An error has occured: {0}", e.ToString ());
96                         }
97                 }
98         }
99 }