コード例 #1
0
        private void InsertRecNo()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] r1 = new byte[5];
            byte[] r2;
            try
            {
                env.Create("ntest.db");
                db = env.CreateDatabase(1, HamConst.HAM_RECORD_NUMBER);
                r1[0] = 1;
                var k = db.InsertRecNo(r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                r1[0] = 2;
                k = db.InsertRecNo(r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                r1[0] = 3;
                k = db.InsertRecNo(r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
            }
            catch (DatabaseException e)
            {
                Assert.Fail("unexpected exception " + e);
            }
            db.Close();
            env.Close();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: alepharchives/hamsterdb
        static void Main(string[] args)
        {
            byte[] key = new byte[5];
            byte[] record = new byte[5];
            Database db = new Database();

            /*
             * first, create a new Database
             */
            db.Create("test.db");

            /*
             * now we can insert, delete or lookup values in the Database
             *
             * for our test program, we just insert a few values, then look them
             * up, then delete them and try to look them up again (which will fail).
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                record[0] = (byte)i;
                db.Insert(key, record);
            }

            /*
             * now look up all values
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                byte[] r = db.Find(key);

                /*
                 * check if the value is ok
                 */
                if (r[0] != (byte)i) {
                    Console.Out.WriteLine("db.Find() returned bad value");
                    return;
                }
            }

            /*
             * close the Database handle, then re-open it (just to demonstrate how
             * to open a Database file)
             */
            db.Close();
            db.Open("test.db");

            /*
             * now erase all values
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;
                db.Erase(key);
            }

            /*
             * once more we try to find all values... every db.Find() call must
             * now fail with HAM_KEY_NOT_FOUND
             */
            for (int i = 0; i < LOOP; i++) {
                key[0] = (byte)i;

                try {
                    byte[] r = db.Find(key);
                }
                catch (DatabaseException e) {
                    if (e.ErrorCode != HamConst.HAM_KEY_NOT_FOUND) {
                        Console.Out.WriteLine("db.Find() returned error " + e);
                        return;
                    }
                }
            }

            /*
             * We're done! No need to close the Database handle - it's closed automatically
             */
            Console.Out.WriteLine("Success!");
        }
コード例 #3
0
        private void InsertKey()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r1 = new byte[5];
            byte[] r2;
            try {
                env.Create("ntest.db");
                db = env.CreateDatabase(1);
                k[0] = 1;
                r1[0] = 1;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 2;
                r1[0] = 2;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 3;
                r1[0] = 3;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
                db.Close();
                env.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
        }
コード例 #4
0
 private void InsertKeyOverwrite()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_OVERWRITE);
         byte[] r2 = db.Find(k);
         checkEqual(r, r2);
         db.Close();
         env.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
コード例 #5
0
 private void FindKeyNull()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         byte[] r = db.Find(null);
     }
     catch (NullReferenceException) {
     }
     db.Close();
     env.Close();
 }
コード例 #6
0
 private void FindUnknownKey()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     try {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         byte[] r = db.Find(k);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
     }
     db.Close();
     env.Close();
 }
コード例 #7
0
 private void ApproxMatching()
 {
     Hamster.Environment env = new Hamster.Environment();
     Database db = new Database();
     byte[] k1 = new byte[5];
     byte[] r1 = new byte[5];
     k1[0] = 1; r1[0] = 1;
     byte[] k2 = new byte[5];
     byte[] r2 = new byte[5];
     k2[0] = 2; r2[0] = 2;
     byte[] k3 = new byte[5];
     byte[] r3 = new byte[5];
     k3[0] = 3; r3[0] = 3;
     try
     {
         env.Create("ntest.db");
         db = env.CreateDatabase(1);
         db.Insert(k1, r1);
         db.Insert(k2, r2);
         db.Insert(k3, r3);
         byte[] r = db.Find(null, ref k2, HamConst.HAM_FIND_GT_MATCH);
         checkEqual(r, r3);
         checkEqual(k2, k3);
         k2[0] = 2;
         r = db.Find(null, ref k2, HamConst.HAM_FIND_LT_MATCH);
         checkEqual(r, r1);
         checkEqual(k2, k1);
         db.Close();
         env.Close();
     }
     catch (DatabaseException e)
     {
         Assert.Fail("unexpected exception " + e);
     }
 }
コード例 #8
0
        private void EraseKeyTwice()
        {
            Hamster.Environment env = new Hamster.Environment();
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r = new byte[5];

            env.Create("ntest.db");
            db = env.CreateDatabase(1);
            db.Insert(k, r);
            byte[] r2 = db.Find(k);
            checkEqual(r, r2);
            db.Erase(k);

            try {
                db.Erase(k);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
            }
            db.Close();
            env.Close();
        }
コード例 #9
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void InsertKeyOverwrite()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     byte[] r = new byte[5];
     try {
         db.Create("ntest.db");
         db.Insert(k, r);
         r[0] = 1;
         db.Insert(k, r, HamConst.HAM_OVERWRITE);
         byte[] r2 = db.Find(k);
         checkEqual(r, r2);
         db.Close();
     }
     catch (DatabaseException e) {
         Assert.Fail("unexpected exception " + e);
     }
 }
コード例 #10
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
        public void InsertKey()
        {
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r1 = new byte[5];
            byte[] r2;
            try {
                db.Create("ntest.db");
                k[0] = 1;
                r1[0] = 1;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 2;
                r1[0] = 2;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);

                k[0] = 3;
                r1[0] = 3;
                db.Insert(k, r1);
                r2 = db.Find(k);
                checkEqual(r1, r2);
                db.Close();
            }
            catch (DatabaseException e) {
                Assert.Fail("unexpected exception " + e);
            }
        }
コード例 #11
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void FindUnknownKey()
 {
     Database db = new Database();
     byte[] k = new byte[5];
     try {
         db.Create("ntest.db");
         byte[] r = db.Find(k);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
     }
     db.Close();
 }
コード例 #12
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
 public void FindKeyNull()
 {
     Database db = new Database();
     try {
         db.Create("ntest.db");
         byte[] r = db.Find(null);
     }
     catch (NullReferenceException) {
     }
     db.Close();
 }
コード例 #13
0
ファイル: DatabaseTest.cs プロジェクト: GerHobbelt/hamsterdb
        public void EraseKeyTwice()
        {
            Database db = new Database();
            byte[] k = new byte[5];
            byte[] r = new byte[5];

            db.Create("ntest.db");
            db.Insert(k, r);
            byte[] r2 = db.Find(k);
            checkEqual(r, r2);
            db.Erase(k);

            try {
                db.Erase(k);
            }
            catch (DatabaseException e) {
                Assert.AreEqual(HamConst.HAM_KEY_NOT_FOUND, e.ErrorCode);
            }
            db.Close();
        }