2 // SqliteTest.cs - Test for the Sqlite ADO.NET Provider in Mono.Data.SqliteClient
\r
3 // This provider works on Linux and Windows and uses the native
\r
4 // sqlite.dll or sqlite.so library.
\r
6 // Modify or add to this test as needed...
\r
8 // SQL Lite can be downloaded from
\r
9 // http://www.hwaci.com/sw/sqlite/download.html
\r
11 // There are binaries for Windows and Linux.
\r
14 // mcs SqliteTest.cs -r System.Data.dll -r Mono.Data.SqliteClient.dll
\r
17 // Daniel Morgan <danmorg@sc.rr.com>
\r
22 using Mono.Data.SqliteClient;
\r
24 namespace Test.Mono.Data.SqliteClient
\r
29 static void Main(string[] args)
\r
32 Console.WriteLine();
\r
36 static void Test(bool v3) {
\r
38 Console.WriteLine("Testing Version 2");
\r
40 Console.WriteLine("Testing Version 3");
\r
42 System.IO.File.Delete("SqliteTest.db");
\r
44 SqliteConnection dbcon = new SqliteConnection();
\r
46 // the connection string is a URL that points
\r
47 // to a file. If the file does not exist, a
\r
50 // "URI=file:some/path"
\r
51 string connectionString =
\r
52 "URI=file:SqliteTest.db";
\r
54 connectionString += ",Version=3";
\r
55 dbcon.ConnectionString = connectionString;
\r
59 SqliteCommand dbcmd = new SqliteCommand();
\r
60 dbcmd.Connection = dbcon;
\r
62 dbcmd.CommandText =
\r
63 "CREATE TABLE MONO_TEST ( " +
\r
66 "NTIME DATETIME); " +
\r
67 "INSERT INTO MONO_TEST " +
\r
68 "(NID, NDESC, NTIME )"+
\r
69 "VALUES(1,'One', '2006-01-01')";
\r
70 Console.WriteLine("Create & insert modified rows = 1: " + dbcmd.ExecuteNonQuery());
\r
73 "INSERT INTO MONO_TEST " +
\r
74 "(NID, NDESC, NTIME )"+
\r
75 "VALUES(2,'Two', '2006-01-02')";
\r
76 Console.WriteLine("Insert modified rows and ID = 1, 2: " + dbcmd.ExecuteNonQuery() + " , " + dbcmd.LastInsertRowID());
\r
79 "SELECT * FROM MONO_TEST";
\r
80 SqliteDataReader reader;
\r
81 reader = dbcmd.ExecuteReader();
\r
83 Console.WriteLine("read and display data...");
\r
84 while(reader.Read())
\r
85 for (int i = 0; i < reader.FieldCount; i++)
\r
86 Console.WriteLine(" Col {0}: {1} (type: {2}, data type: {3})",
\r
87 i, reader[i].ToString(), reader[i].GetType().FullName, reader.GetDataTypeName(i));
\r
89 dbcmd.CommandText = "SELECT NDESC FROM MONO_TEST WHERE NID=2";
\r
90 Console.WriteLine("read and display a scalar = 'Two': " + dbcmd.ExecuteScalar());
\r
92 dbcmd.CommandText = "SELECT count(*) FROM MONO_TEST";
\r
93 Console.WriteLine("read and display a non-column scalar = 2: " + dbcmd.ExecuteScalar());
\r
95 Console.WriteLine("read and display data using DataAdapter...");
\r
96 SqliteDataAdapter adapter = new SqliteDataAdapter("SELECT * FROM MONO_TEST", connectionString);
\r
97 DataSet dataset = new DataSet();
\r
98 adapter.Fill(dataset);
\r
99 foreach(DataTable myTable in dataset.Tables){
\r
100 foreach(DataRow myRow in myTable.Rows){
\r
101 foreach (DataColumn myColumn in myTable.Columns){
\r
102 Console.WriteLine(" " + myRow[myColumn]);
\r
108 dbcmd.CommandText = "SELECT NDESC INVALID SYNTAX FROM MONO_TEST WHERE NID=2";
\r
109 dbcmd.ExecuteNonQuery();
\r
110 Console.WriteLine("Should not reach here.");
\r
111 } catch (Exception e) {
\r
112 Console.WriteLine("Testing a syntax error: " + e.GetType().Name + ": " + e.Message);
\r
116 dbcmd.CommandText = "SELECT 0/0 FROM MONO_TEST WHERE NID=2";
\r
117 Console.WriteLine("Should not reach here: " + dbcmd.ExecuteScalar());
\r
118 } catch (Exception e) {
\r
119 Console.WriteLine("Testing an execution error: " + e.GetType().Name + ": " + e.Message);
\r