Erase() public method

Erases a Database Item
This method wraps the native ups_db_erase function.
This function erases a Database item. If the item with the specified key does not exist in the Database, error code UpsConst.UPS_KEY_NOT_FOUND is thrown.
Note that this method can not erase a single duplicate key. If the key has multiple duplicates, all duplicates of this key will be erased. Use Cursor.Erase to erase a specific duplicate key.
/// /// /// if the key was not found /// /// if you tried to insert a key in a read-only Database /// ///
public Erase ( Transaction txn, byte key ) : void
txn Transaction The optional Transaction
key byte The key of the item to delete
return void
Exemplo n.º 1
0
 private void EraseUnknownKey()
 {
     Upscaledb.Environment env = new Upscaledb.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     env.Create("ntest.db");
     db = env.CreateDatabase(1);
     try {
         db.Erase(k);
     }
     catch (DatabaseException e) {
         Assert.AreEqual(UpsConst.UPS_KEY_NOT_FOUND, e.ErrorCode);
     }
     db.Close();
     env.Close();
 }
Exemplo n.º 2
0
 private void EraseKeyNegative()
 {
     Upscaledb.Environment env = new Upscaledb.Environment();
     Database db = new Database();
     byte[] k = new byte[5];
     env.Create("ntest.db");
     db = env.CreateDatabase(1);
     try {
         db.Erase(null);
     }
     catch (NullReferenceException) {
     }
     db.Close();
     env.Close();
 }
Exemplo n.º 3
0
        private void EraseKeyTwice()
        {
            Upscaledb.Environment env = new Upscaledb.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(UpsConst.UPS_KEY_NOT_FOUND, e.ErrorCode);
            }
            db.Close();
            env.Close();
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            byte[] key = new byte[5];
            byte[] record = new byte[5];
            Upscaledb.Environment env = new Upscaledb.Environment();
            Database db = new Database();

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

            /*
             * 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();
            env.Close();
            env.Open("test.db");
            db = env.OpenDatabase(1);

            /*
             * 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 != UpsConst.UPS_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!");
        }