package test.db.h2;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestH2 {
public static void main(String[] a) throws Exception {
String driverclass = "org.h2.Driver";
String dburl = "jdbc:h2:db/testh2";
String username = "sa";
String password = "";
Class.forName(driverclass);
Connection conn = DriverManager.getConnection(dburl, username, password);
Statement s;
conn.setAutoCommit(false);
s = conn.createStatement();
try {
s.execute("drop table test");
conn.commit();
} catch (Exception e) {
}
int MAX = 1000 * 10;
{ // warm
// setUp
conn.setAutoCommit(true);
s.execute("create table test(id VARCHAR(255),name VARCHAR(255))");
// prepare
@SuppressWarnings("unused")
long start, end, nanoAll, nanoEvery;
start = System.nanoTime();
conn.setAutoCommit(false);
for (int i = 0; i < 1; i++) {
s.execute("insert into test(id,name) values(\'wanshilian" + i + "\',\'test\')");
}
conn.commit();
end = System.nanoTime();
nanoAll = end - start;
nanoEvery = nanoAll / MAX;
conn.setAutoCommit(true);
s = conn.createStatement();
try {
s.execute("drop table test");
conn.commit();
} catch (Exception e) {
}
}
{
String desc = "手工提交 无Key";
// setUp
conn.setAutoCommit(true);
s.execute("create table test(id VARCHAR(255),name VARCHAR(255))");
// prepare
long start, end, nanoAll, nanoEvery;
start = System.nanoTime();
conn.setAutoCommit(false);
for (int i = 0; i < MAX; i++) {
s.execute("insert into test(id,name) values(\'wanshilian" + i + "\',\'test\')");
}
conn.commit();
end = System.nanoTime();
nanoAll = end - start;
nanoEvery = nanoAll / MAX;
System.out.printf("[ %20s ] All :%8d ms; every : %8d nano; one second : %8d times;\n", desc, (nanoAll / (1000 * 1000)), +nanoEvery,
1000 * 1000 * 1000 / nanoEvery);
conn.setAutoCommit(true);
s = conn.createStatement();
try {
s.execute("drop table test");
conn.commit();
} catch (Exception e) {
}
}
{
String desc = "自动提交 无Key";
// setUp
conn.setAutoCommit(true);
s.execute("create table test(id VARCHAR(255),name VARCHAR(255))");
// prepare
long start, end, nanoAll, nanoEvery;
start = System.nanoTime();
conn.setAutoCommit(true);
for (int i = 0; i < MAX; i++) {
s.execute("insert into test(id,name) values(\'wanshilian" + i + "\',\'test\')");
}
end = System.nanoTime();
nanoAll = end - start;
nanoEvery = nanoAll / MAX;
System.out.printf("[ %20s ] All :%8d ms; every : %8d nano; one second : %8d times;\n", desc, (nanoAll / (1000 * 1000)), +nanoEvery,
1000 * 1000 * 1000 / nanoEvery);
conn.setAutoCommit(true);
s = conn.createStatement();
try {
s.execute("drop table test");
conn.commit();
} catch (Exception e) {
}
}
// s= conn.createStatement();
// ResultSet r = s.executeQuery("select * from test;");
// int cnt = 0;
// while (r.next()) {
// //System.out.println(r.getString("id"));
// cnt ++;
// }
// System.out.println(cnt);
//
// conn.setAutoCommit(false);
// s = conn.createStatement();
// try {
// s.execute("drop table test");
// conn.commit();
// } catch (Exception e) {
// }
{
String desc = "批量执行 无Key";
// setUp
conn.setAutoCommit(true);
s.execute("create table test(id VARCHAR(255),name VARCHAR(255))");
conn.setAutoCommit(false);
// prepare
long start, end, nanoAll, nanoEvery;
start = System.nanoTime();
PreparedStatement p = conn.prepareStatement("insert into test(id,name) values(?,?)");
for (int i = 0; i < MAX; i++) {
p.setString(1, "wanshilian" + i + "");
p.setString(2, "test");
p.addBatch();
}
p.executeBatch();
conn.commit();
end = System.nanoTime();
nanoAll = end - start;
nanoEvery = nanoAll / MAX;
System.out.printf("[ %20s ] All :%8d ms; every : %8d nano; one second : %8d times;\n", desc, (nanoAll / (1000 * 1000)), +nanoEvery,
1000 * 1000 * 1000 / nanoEvery);
s= conn.createStatement();
ResultSet r = s.executeQuery("select * from test");
int cnt = 0;
while (r.next()) {
//System.out.println(r.getString("id"));
cnt ++;
}
assert cnt == MAX;
conn.setAutoCommit(true);
s = conn.createStatement();
try {
s.execute("drop table test");
conn.commit();
} catch (Exception e) {
}
}
conn.close();
}
}