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

📄 testhsql.java

📁 一个用java写的开源的数据库系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    10, 127                };                p.setBytes(4, b2);                p.setDouble(5, -3.1415e-20);                java.util.Calendar cal = java.util.Calendar.getInstance();                cal.set(2000, 2, 29);                // fredt@users - who designed the java.util.Calendar API?                p.setDate(6, new Date(cal.getTime().getTime()));                p.executeUpdate();                s = "select * from TabProfile where id=-2";                r = sStatement.executeQuery(s);                r.next();                if (!r.getString(2).equals("\"Birdie\"'s car ?")) {                    throw new Exception("Unicode error.");                }                r.close();                s = "drop table TabProfile";                sStatement.execute(s);                s = "create table obj(id int,o object)";                sStatement.execute(s);                s = "insert into obj values(?,?)";                p = cConnection.prepareStatement(s);                p.setInt(1, 1);                int ia1[] = {                    1, 2, 3                };                p.setObject(2, ia1);                p.executeUpdate();                p.clearParameters();                p.setInt(1, 2);                java.awt.Rectangle r1 = new java.awt.Rectangle(10, 11, 12,                    13);                p.setObject(2, r1);                p.executeUpdate();                r = sStatement.executeQuery(                    "SELECT o FROM obj ORDER BY id DESC");                r.next();                java.awt.Rectangle r2 = (java.awt.Rectangle) r.getObject(1);                if (r2.x != 10 || r2.y != 11 || r2.width != 12                        || r2.height != 13) {                    throw new Exception("Object data error: Rectangle");                }                r.next();                int ia2[] = (int[]) (r.getObject(1));                if (ia2[0] != 1 || ia2[1] != 2 || ia2[2] != 3                        || ia2.length != 3) {                    throw new Exception("Object data error: int[]");                }                s = "drop table obj";                sStatement.execute(s);            }            // cache, index and performance tests            s = "CREATE CACHED TABLE Addr(ID INT PRIMARY KEY,First CHAR,"                + "Name CHAR,ZIP INT)";            sStatement.execute(s);            s = "CREATE INDEX iName ON Addr(Name)";            sStatement.execute(s);            s = "SET WRITE_DELAY TRUE";            sStatement.execute(s);            start = System.currentTimeMillis();            for (int i = 0; i < max; i++) {                s = "INSERT INTO Addr VALUES(" + i + ",'Marcel" + i + "',"                    + "'Renggli" + (max - i - (i % 31)) + "',"                    + (3000 + i % 100) + ")";                if (sStatement.executeUpdate(s) != 1) {                    throw new Exception("Insert failed");                }                if (i % 100 == 0) {                    printStatus("insert   ", i, max, start);                }            }            printStatus("insert   ", max, max, start);            print("");            s = "SELECT COUNT(*) FROM Addr";            r = sStatement.executeQuery(s);            r.next();            int c = r.getInt(1);            if (c != max) {                throw new Exception("Count should be " + (max) + " but is "                                    + c);            }            if (persistent) {                // close & reopen to test backup                cConnection.close();                cConnection = DriverManager.getConnection(url, user,                        password);                sStatement = cConnection.createStatement();            }            start = System.currentTimeMillis();            for (int i = 0; i < max; i++) {                s = "UPDATE Addr SET Name='Robert" + (i + (i % 31))                    + "' WHERE ID=" + i;                if (sStatement.executeUpdate(s) != 1) {                    throw new Exception("Update failed");                }                if (i % 100 == 0) {                    printStatus("updated  ", i, max, start);                    // s="SELECT COUNT(*) FROM Addr";                    // r=sStatement.executeQuery(s);                    // r.next();                    // int c=r.getInt(1);                    // if(c!=max) {                    // throw new Exception("Count should be "+max+" but is "+c);                    // }                }            }            printStatus("update   ", max, max, start);            print("");            if (persistent) {                s = "SHUTDOWN IMMEDIATELY";                sStatement.execute(s);                // open the database; it must be restored after shutdown                cConnection.close();                cConnection = DriverManager.getConnection(url, user,                        password);                sStatement = cConnection.createStatement();            }            start = System.currentTimeMillis();            for (int i = 0; i < max; i++) {                s = "DELETE FROM Addr WHERE ID=" + (max - 1 - i);                if (sStatement.executeUpdate(s) != 1) {                    throw new Exception("Delete failed");                }                if (i % 100 == 0) {                    printStatus("deleting ", i, max, start);                    // s="SELECT COUNT(*) FROM Addr";                    // r=sStatement.executeQuery(s);                    // r.next();                    // int c=r.getInt(1);                    // if(c!=max-i-1) {                    // throw new Exception("Count should be "+(max-i-1)+" but is "+c);                    // }                }            }            printStatus("delete   ", max, max, start);            print("");            sStatement.execute("DROP TABLE Addr");        } catch (Exception e) {            print("");            print("SelfTest error: " + e);            print("with SQL command: " + s);            e.printStackTrace();        }        cConnection.close();        print("Test finished");    }    /**     *  Method declaration     *     * @param  stat     * @param  s     * @throws  Exception     */    static void test(Statement stat, String s) throws Exception {        String result = "";        char   type   = ' ';        if (s.startsWith("/*")) {            type = s.charAt(2);            int end = s.indexOf("*/");            result = s.substring(3, end);        }        try {            stat.execute(s);            int       u = stat.getUpdateCount();            int       i = 0;            ResultSet r;            switch (type) {                case ' ' :                    break;                case 'u' :                    if (u != Integer.parseInt(result)) {                        throw new Exception("Expected update count=" + result                                            + " but update count was " + u                                            + " / " + s);                    }                    break;                case 'r' :                    if (u != -1) {                        throw new Exception("Expected ResultSet"                                            + " but update count was " + u                                            + " / " + s);                    }                    r = stat.getResultSet();                    r.next();                    String col = r.getString(1);                    if (r.wasNull() || col == null) {                        if (!result.equals("")) {                            throw new Exception("Expected " + result                                                + " but got null / " + s);                        }                    } else if (!col.equals(result)) {                        throw new Exception("Expected >" + result + "<"                                            + " but got >" + col + "< / "                                            + s);                    }                    break;                case 'c' :                    if (u != -1) {                        throw new Exception("Expected ResultSet"                                            + " but update count was " + u                                            + " / " + s);                    }                    r = stat.getResultSet();                    while (r.next()) {                        i++;                    }                    if (i != Integer.parseInt(result)) {                        throw new Exception("Expected " + result + " rows "                                            + " but got " + i + " rows / "                                            + s);                    }                    break;                case 'e' :                    throw new Exception("Expected error "                                        + "but got no error / " + s);            }        } catch (SQLException e) {            if (type != 'e') {                throw new Exception("Expected " + type + "/" + result                                    + " but got error " + e.getMessage()                                    + " / " + s);            }        }    }    /**     *  Method declaration     *     * @param  s     * @param  i     * @param  max     * @param  start     */    static void printStatus(String s, int i, int max, long start) {        System.out.print(s + ": " + i + "/" + max + " " + (100 * i / max)                         + "% ");        long now = System.currentTimeMillis();        if (now > start) {            System.out.print((i * 1000 / (now - start)));        }        System.out.print(" rows/s                \r");    }    /**     *  Method declaration     *     * @param  s     */    private static void print(String s) {        System.out.println(s);    }}

⌨️ 快捷键说明

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