⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hellodatabaseworld.java

📁 berkeleyDB,强大的嵌入式数据,多个数据库的内核
💻 JAVA
字号:
/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2004 *	Sleepycat Software.  All rights reserved. * * $Id: HelloDatabaseWorld.java,v 1.2 2004/09/22 16:17:09 mark Exp $ */package com.sleepycat.examples.collections.hello;import java.io.File;import java.util.Iterator;import java.util.Map;import java.util.SortedMap;import com.sleepycat.bind.serial.ClassCatalog;import com.sleepycat.bind.serial.SerialBinding;import com.sleepycat.bind.serial.StoredClassCatalog;import com.sleepycat.bind.tuple.TupleBinding;import com.sleepycat.collections.StoredIterator;import com.sleepycat.collections.StoredSortedMap;import com.sleepycat.collections.TransactionRunner;import com.sleepycat.collections.TransactionWorker;import com.sleepycat.db.Database;import com.sleepycat.db.DatabaseConfig;import com.sleepycat.db.DatabaseType;import com.sleepycat.db.Environment;import com.sleepycat.db.EnvironmentConfig;/** * @author Mark Hayes */public class HelloDatabaseWorld implements TransactionWorker {    private static final String[] INT_NAMES = {        "Hello", "Database", "World",    };    private static boolean create = true;    private Environment env;    private ClassCatalog catalog;    private Database db;    private SortedMap map;    /** Creates the environment and runs a transaction */    public static void main(String[] argv)        throws Exception {        String dir = "./tmp";        // environment is transactional        EnvironmentConfig envConfig = new EnvironmentConfig();        envConfig.setTransactional(true);        envConfig.setInitializeCache(true);        envConfig.setInitializeLocking(true);        if (create) {            envConfig.setAllowCreate(true);        }        Environment env = new Environment(new File(dir), envConfig);        // create the application and run a transaction        HelloDatabaseWorld worker = new HelloDatabaseWorld(env);        TransactionRunner runner = new TransactionRunner(env);        try {            // open and access the database within a transaction            runner.run(worker);        } finally {            // close the database outside the transaction            worker.close();        }    }    /** Creates the database for this application */    private HelloDatabaseWorld(Environment env)        throws Exception {        this.env = env;        open();    }    /** Performs work within a transaction. */    public void doWork()        throws Exception {        writeAndRead();    }    /** Opens the database and creates the Map. */    private void open()        throws Exception {        // use a generic database configuration        DatabaseConfig dbConfig = new DatabaseConfig();        dbConfig.setTransactional(true);        if (create) {            dbConfig.setAllowCreate(true);            dbConfig.setType(DatabaseType.BTREE);        }        // catalog is needed for serial bindings (java serialization)        Database catalogDb = env.openDatabase(null, "catalog", null, dbConfig);        catalog = new StoredClassCatalog(catalogDb);        // use Integer tuple binding for key entries        TupleBinding keyBinding =            TupleBinding.getPrimitiveBinding(Integer.class);        // use String serial binding for data entries        SerialBinding dataBinding = new SerialBinding(catalog, String.class);        this.db = env.openDatabase(null, "helloworld", null, dbConfig);        // create a map view of the database        this.map = new StoredSortedMap(db, keyBinding, dataBinding, true);    }    /** Closes the database. */    private void close()        throws Exception {        if (catalog != null) {            catalog.close();            catalog = null;        }        if (db != null) {            db.close();            db = null;        }        if (env != null) {            env.close();            env = null;        }    }    /** Writes and reads the database via the Map. */    private void writeAndRead() {        // check for existing data        Integer key = new Integer(0);        String val = (String) map.get(key);        if (val == null) {            System.out.println("Writing data");            // write in reverse order to show that keys are sorted            for (int i = INT_NAMES.length - 1; i >= 0; i -= 1) {                map.put(new Integer(i), INT_NAMES[i]);            }        }        // get iterator over map entries        Iterator iter = map.entrySet().iterator();        try {            System.out.println("Reading data");            while (iter.hasNext()) {                Map.Entry entry = (Map.Entry) iter.next();                System.out.println(entry.getKey().toString() + ' ' +                                   entry.getValue());            }        } finally {            // all database iterators must be closed!!            StoredIterator.close(iter);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -