callbacktest.java

来自「mysql-5.0.22.tar.gz源码包」· Java 代码 · 共 84 行

JAVA
84
字号
package com.sleepycat.test;import com.sleepycat.db.*;public class CallbackTest{    public static void main(String args[])    {        try {            Db db = new Db(null, 0);            db.set_bt_compare(new BtreeCompare());            db.open(null, "test.db", "", Db.DB_BTREE, Db.DB_CREATE, 0666);            StringDbt[] keys = new StringDbt[10];            StringDbt[] datas = new StringDbt[10];            for (int i = 0; i<10; i++) {                int val = (i * 3) % 10;                keys[i] = new StringDbt("key" + val);                datas[i] = new StringDbt("data" + val);                System.out.println("put " + val);                db.put(null, keys[i], datas[i], 0);            }        }        catch (DbException dbe) {            System.err.println("FAIL: " + dbe);        }        catch (java.io.FileNotFoundException fnfe) {            System.err.println("FAIL: " + fnfe);        }    }}class BtreeCompare    implements DbBtreeCompare{    /* A weird comparator, for example.     * In fact, it may not be legal, since it's not monotonically increasing.     */    public int bt_compare(Db db, Dbt dbt1, Dbt dbt2)    {        System.out.println("compare function called");        byte b1[] = dbt1.get_data();        byte b2[] = dbt2.get_data();        System.out.println("  " + (new String(b1)) + ", " + (new String(b2)));        int len1 = b1.length;        int len2 = b2.length;        if (len1 != len2)            return (len1 < len2) ? 1 : -1;        int value = 1;        for (int i=0; i<len1; i++) {            if (b1[i] != b2[i])                return (b1[i] < b2[i]) ? value : -value;            value *= -1;        }        return 0;    }}class StringDbt extends Dbt{    StringDbt()    {        set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval    }    StringDbt(String value)    {        setString(value);        set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval    }    void setString(String value)    {        set_data(value.getBytes());        set_size(value.length());    }    String getString()    {        return new String(get_data(), 0, get_size());    }}

⌨️ 快捷键说明

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