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

📄 exampledatabaseread.java

📁 嵌入式数据库Berkeley DB-4.5.20源代码
💻 JAVA
字号:
// File: ExampleDatabaseReadpackage db.GettingStarted;import com.sleepycat.bind.EntryBinding;import com.sleepycat.bind.serial.SerialBinding;import com.sleepycat.bind.tuple.TupleBinding;import com.sleepycat.db.Cursor;import com.sleepycat.db.DatabaseEntry;import com.sleepycat.db.DatabaseException;import com.sleepycat.db.LockMode;import com.sleepycat.db.OperationStatus;import com.sleepycat.db.SecondaryCursor;import java.io.IOException;public class ExampleDatabaseRead {    private static String myDbsPath = "./";    // Encapsulates the database environment and databases.    private static MyDbs myDbs = new MyDbs();    private static TupleBinding inventoryBinding;    private static EntryBinding vendorBinding;    // The item to locate if the -s switch is used    private static String locateItem;    private static void usage() {        System.out.println("ExampleDatabaseRead [-h <env directory>]" +                           "[-s <item to locate>]");        System.exit(-1);    }    public static void main(String args[]) {        ExampleDatabaseRead edr = new ExampleDatabaseRead();        try {            edr.run(args);        } catch (DatabaseException dbe) {            System.err.println("ExampleDatabaseRead: " + dbe.toString());            dbe.printStackTrace();        } finally {            myDbs.close();        }        System.out.println("All done.");    }    private void run(String args[])        throws DatabaseException {        // Parse the arguments list        parseArgs(args);        myDbs.setup(myDbsPath);        // Setup our bindings.        inventoryBinding = new InventoryBinding();        vendorBinding =             new SerialBinding(myDbs.getClassCatalog(),                               Vendor.class);        if (locateItem != null) {            showItem();        } else {            showAllInventory();        }    }    private void showItem() throws DatabaseException {        SecondaryCursor secCursor = null;        try {            // searchKey is the key that we want to find in the            // secondary db.            DatabaseEntry searchKey =                new DatabaseEntry(locateItem.getBytes("UTF-8"));            // foundKey and foundData are populated from the primary            // entry that is associated with the secondary db key.            DatabaseEntry foundKey = new DatabaseEntry();            DatabaseEntry foundData = new DatabaseEntry();            // open a secondary cursor            secCursor =                myDbs.getNameIndexDB().openSecondaryCursor(null, null);            // Search for the secondary database entry.            OperationStatus retVal =                secCursor.getSearchKey(searchKey, foundKey,                    foundData, LockMode.DEFAULT);            // Display the entry, if one is found. Repeat until no more            // secondary duplicate entries are found            while(retVal == OperationStatus.SUCCESS) {                Inventory theInventory =                    (Inventory)inventoryBinding.entryToObject(foundData);                displayInventoryRecord(foundKey, theInventory);                retVal = secCursor.getNextDup(searchKey, foundKey,                    foundData, LockMode.DEFAULT);            }        } catch (Exception e) {            System.err.println("Error on inventory secondary cursor:");            System.err.println(e.toString());            e.printStackTrace();        } finally {            if (secCursor != null) {                secCursor.close();            }        }    }    private void showAllInventory()        throws DatabaseException {        // Get a cursor        Cursor cursor = myDbs.getInventoryDB().openCursor(null, null);        // DatabaseEntry objects used for reading records        DatabaseEntry foundKey = new DatabaseEntry();        DatabaseEntry foundData = new DatabaseEntry();        try { // always want to make sure the cursor gets closed            while (cursor.getNext(foundKey, foundData,                        LockMode.DEFAULT) == OperationStatus.SUCCESS) {                Inventory theInventory =                    (Inventory)inventoryBinding.entryToObject(foundData);                displayInventoryRecord(foundKey, theInventory);            }        } catch (Exception e) {            System.err.println("Error on inventory cursor:");            System.err.println(e.toString());            e.printStackTrace();        } finally {            cursor.close();        }    }    private void displayInventoryRecord(DatabaseEntry theKey,                                        Inventory theInventory)        throws DatabaseException {        String theSKU = new String(theKey.getData());        System.out.println(theSKU + ":");        System.out.println("\t " + theInventory.getItemName());        System.out.println("\t " + theInventory.getCategory());        System.out.println("\t " + theInventory.getVendor());        System.out.println("\t\tNumber in stock: " +            theInventory.getVendorInventory());        System.out.println("\t\tPrice per unit:  " +            theInventory.getVendorPrice());        System.out.println("\t\tContact: ");        DatabaseEntry searchKey = null;        try {            searchKey =                new DatabaseEntry(theInventory.getVendor().getBytes("UTF-8"));        } catch (IOException willNeverOccur) {}        DatabaseEntry foundVendor = new DatabaseEntry();        if (myDbs.getVendorDB().get(null, searchKey, foundVendor,                LockMode.DEFAULT) != OperationStatus.SUCCESS) {            System.out.println("Could not find vendor: " +                theInventory.getVendor() + ".");            System.exit(-1);        } else {            Vendor theVendor =                (Vendor)vendorBinding.entryToObject(foundVendor);            System.out.println("\t\t " + theVendor.getAddress());            System.out.println("\t\t " + theVendor.getCity() + ", " +                theVendor.getState() + " " + theVendor.getZipcode());            System.out.println("\t\t Business Phone: " +                theVendor.getBusinessPhoneNumber());            System.out.println("\t\t Sales Rep: " +                                theVendor.getRepName());            System.out.println("\t\t            " +                theVendor.getRepPhoneNumber());       }    }    protected ExampleDatabaseRead() {}    private static void parseArgs(String args[]) {        for(int i = 0; i < args.length; ++i) {            if (args[i].startsWith("-")) {                switch(args[i].charAt(1)) {                    case 'h':                        myDbsPath = new String(args[++i]);                        break;                    case 's':                        locateItem = new String(args[++i]);                    break;                    default:                        usage();                }            }        }    }}

⌨️ 快捷键说明

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