Example #1
0
        static void Test(Database db)
        {
            const string TABLE = "table";
            const string COLUMN = "column";
            const string COLUMN2 = "column2";
            const string COLUMN3 = "column3";
            const string COLUMN4 = "int_column";
            const string COLUMN5 = "code";

            const string msg = "ON222DT29102011T174217P0Z222";

            const string message2 = "выаыаваыва";

            using (var tx = db.Session.BeginTransaction())
            using (var table = db.OpenTable(TABLE))
            using (var cursor = table.OpenPrimaryCursor())
            {
                const string message = "Hello world";
                const string msg3 = "msg3";

                var column1 = table.GetColumn<string>(COLUMN);
                var column2 = table.GetColumn<string>(COLUMN2);
                var column3 = table.GetColumn<string>(COLUMN3);
                var column4 = table.GetColumn<int>(COLUMN4);
                var column5 = table.GetColumn(COLUMN5);

                using (var ins = cursor.AddRow())
                {
                    ins.SetValue(column1, message);
                    ins.SetValue(column2, message2);
                    ins.SetValue(column3, msg3);
                    ins.SetValue(column4, 1);
                    ins.SetValue(column5, msg);
                    ins.Save();
                }

                using (var ins = cursor.AddRow())
                {
                    ins.SetValue(column1, msg3);
                    ins.SetValue(column2, message2);
                    ins.SetValue(column3, msg3);
                    ins.SetValue(column4, 4);
                    ins.SetValue(column5, msg);
                    ins.Save();
                }

                tx.Commit();
            }

            Console.WriteLine(COLUMN + " : " + COLUMN2 + " : " + COLUMN3);

            using (var table = db.OpenTable(TABLE))
            {
                var pf = new PredicateFactory(table);

                using (var cursor = table.OpenPrimaryCursor())
                    AssertRC(2, cursor, "Simply enum rows");

                using (var cursor = table.OpenCursor(new Eq<string>(table.GetIndex<string>(COLUMN), "msg3")))
                    AssertRC(1, cursor, "Find where column1 = msg3");

                using (var cursor = table.OpenCursor(pf.Eq(COLUMN, "msg3")))
                    AssertRC(1, cursor, "Find where column1 = msg3");

                using (var cursor = table.OpenCursor(pf.Eq(COLUMN2, message2)))
                    AssertRC(2, cursor, "Find where column2 = message2");

                using (var cursor = table.OpenCursor(new StartsWith(table.GetIndex<string>(COLUMN), "Hell")))
                    AssertRC(1, cursor, "Find where column1 LIKE Hell");

                var predicate = new And(
                    pf.StartsWith(COLUMN, "ms"),
                    pf.Eq(COLUMN2, message2)
                    );

                using (var cursor = table.OpenCursor(predicate))
                    AssertRC(1, cursor, "Find where column1 = ms AND column2 = message2");

                using (var cursor = table.OpenCursor(pf.Between(COLUMN, "zzzs", "msg/", false, true)))
                    AssertRC(1, cursor, "Find column1 between msg/ AND zzzs");

                using (var cursor = table.OpenCursor(new Eq<int>(table.GetIndex<int>(COLUMN4), 4)))
                    AssertRC(1, cursor, "Find column4 = 4");

                using (var cursor = table.OpenCursor(new Eq<int>(table.GetIndex<int>(COLUMN4), 6)))
                    AssertRC(0, cursor, "Find column4 = 6");

                using (var cursor = table.OpenCursor(pf.Le(COLUMN4, 3)))
                    AssertRC(1, cursor, "Find column4 < 3");

                using (var cursor = table.OpenCursor(pf.Le(COLUMN4, 3)))
                {
                    cursor.MoveNext();

                    using (var upd = cursor.EditRow())
                    {
                        upd.SetValue(table.GetColumn<int>(COLUMN4), 6);
                        upd.Save();
                    }

                }
                using (var c2 = table.OpenCursor(pf.Le(COLUMN4, 3)))
                    AssertRC(0, c2, "Find column4 < 3");

                using (var cursor = table.OpenCursor(pf.Eq(COLUMN5, msg)))
                    AssertRC(2, cursor, "Find column5 = longMsg");

                using (var cursor = table.OpenCursor(pf.Eq(COLUMN5, "ON222DT200102011T174244P0Z222")))
                    AssertRC(0, cursor, "Find column5 = longMsg");

                using (var cursor = table.OpenCursor(pf.Eq(COLUMN5, "O")))
                    AssertRC(0, cursor, "Find column5 = longMsg2");

                using (var cursor = table.OpenCursor(pf.Eq(COLUMN5, "4ON2")))
                    AssertRC(0, cursor, "Find column5 = longMsg3");
            }

            Console.WriteLine("---");
            Console.WriteLine("Succeeded {0} out of {1}", Succeeded, Total);
        }