package my.test; import java.sql.Blob; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import org.h2.jdbc.JdbcConnection; public class JDBCTest { static Properties prop = new Properties(); static String url = "jdbc:h2:tcp://localhost:9092/test9"; public static void main2(String[] args) throws Exception { Class.forName("org.h2.Driver"); Connection conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9092/mydb", "sa", ""); Statement stmt = conn.createStatement(); stmt.executeUpdate("DROP TABLE IF EXISTS my_table"); stmt.executeUpdate("CREATE TABLE IF NOT EXISTS my_table(name varchar(20))"); stmt.executeUpdate("INSERT INTO my_table(name) VALUES('zhh')"); ResultSet rs = stmt.executeQuery("SELECT name FROM my_table"); rs.next(); System.out.println(rs.getString(1)); stmt.close(); conn.close(); } public static class MyDatabaseEventListener implements org.h2.api.DatabaseEventListener { @Override public void init(String url) { // TODO Auto-generated method stub } @Override public void opened() { // TODO Auto-generated method stub } @Override public void exceptionThrown(SQLException e, String sql) { // TODO Auto-generated method stub } @Override public void setProgress(int state, String name, int x, int max) { // TODO Auto-generated method stub } @Override public void closingDatabase() { // TODO Auto-generated method stub } } public static void main(String[] args) throws Exception { prop.setProperty("user", "sa"); prop.setProperty("password", ""); // testJdbcConnection(); // testJdbcStatement(); testBlob(); } public static void testJdbcConnection() throws Exception { System.setProperty("h2.baseDir", "E:\\H2\\baseDir"); // TRACE_LEVEL_FILE参数放System中无效,放在url中非法,只能放在prop中 // System.setProperty("TRACE_LEVEL_FILE", // "E:\\H2\\baseDir\\MY_TRACE_LEVEL_FILE"); // url +="; TRACE_LEVEL_FILE=E:\\H2\\baseDir\\MY_TRACE_LEVEL_FILE"; // prop.setProperty("TRACE_LEVEL_FILE", // "E:\\H2\\baseDir\\MY_TRACE_LEVEL_FILE.txt"); //只能是数字 prop.setProperty("TRACE_LEVEL_FILE", "10"); prop.setProperty("TRACE_LEVEL_SYSTEM_OUT", "20"); url = "jdbc:h2:tcp://localhost:9092,localhost:9093/test9"; // prop.setProperty("AUTO_SERVER", "true"); // //AUTO_SERVER为true时url中不能指定多个server prop.setProperty("AUTO_RECONNECT", "true"); // prop.setProperty("DATABASE_EVENT_LISTENER", // "org.h2.samples.ShowProgress"); // prop.setProperty("DATABASE_EVENT_LISTENER", // "my.test.JdbcConnectionTest$MyDatabaseEventListener"); // prop.setProperty("CIPHER", "my_cipher"); // prop.setProperty("password", "my_password1 my_password2"); JdbcConnection conn = new JdbcConnection(url, prop); PreparedStatement ps = conn.prepareStatement("insert into t values(?,?)"); ps.setInt(2, 20); ps.setString(1, "aaa"); ps.executeUpdate(); ps.close(); // stmt.close(); conn.close(); } public static void testJdbcStatement() throws Exception { System.setProperty("h2.baseDir", "E:\\H2\\baseDir"); // TRACE_LEVEL_FILE参数放System中无效,放在url中非法,只能放在prop中 // System.setProperty("TRACE_LEVEL_FILE", // "E:\\H2\\baseDir\\MY_TRACE_LEVEL_FILE"); // url +="; TRACE_LEVEL_FILE=E:\\H2\\baseDir\\MY_TRACE_LEVEL_FILE"; // prop.setProperty("TRACE_LEVEL_FILE", // "E:\\H2\\baseDir\\MY_TRACE_LEVEL_FILE.txt"); //只能是数字 // prop.setProperty("TRACE_LEVEL_FILE", "10"); // prop.setProperty("TRACE_LEVEL_SYSTEM_OUT", "20"); // url = "jdbc:h2:tcp://localhost:9092,localhost:9093/test9"; // prop.setProperty("AUTO_SERVER", "true"); // //AUTO_SERVER为true时url中不能指定多个server prop.setProperty("AUTO_RECONNECT", "true"); // prop.setProperty("DATABASE_EVENT_LISTENER", // "org.h2.samples.ShowProgress"); // prop.setProperty("DATABASE_EVENT_LISTENER", // "my.test.JdbcConnectionTest$MyDatabaseEventListener"); // prop.setProperty("CIPHER", "my_cipher"); // prop.setProperty("password", "my_password1 my_password2"); JdbcConnection conn = new JdbcConnection(url, prop); Statement stmt = conn.createStatement(); // stmt.executeUpdate("update t set(name, age)=('123',10)"); stmt.setFetchSize(5); ResultSet rs = stmt.executeQuery("select * from t"); rs.getMetaData(); while (rs.next()) { System.out.println(rs.getString(1)); System.out.println(rs.getString(2)); } PreparedStatement ps = conn.prepareStatement("select * from t"); ps.getMetaData(); ps.close(); stmt.close(); conn.close(); } public static void testBlob() throws Exception { System.setProperty("h2.lobInDatabase", "false"); System.setProperty("h2.lobClientMaxSizeMemory", "1024"); System.setProperty("java.io.tmpdir", "E:\\H2\\tmp"); JdbcConnection conn = new JdbcConnection(url, prop); Statement stmt = conn.createStatement(); ResultSet rs; // stmt.execute("DROP TABLE IF EXISTS my_lob"); stmt.execute("CREATE TABLE IF NOT EXISTS my_lob(name varchar(20), b blob, c clob)"); // byte[] bytes={ (byte)1,(byte)2}; byte[] bytes = new byte[5049]; for (int i = 0; i < 5049; i++) bytes[i] = (byte) i; Blob b = conn.createBlob(); b.setBytes(1, bytes); b.length(); Clob c = conn.createClob(); c.setString(1, new String(bytes)); c.length(); PreparedStatement ps = conn.prepareStatement("insert into my_lob(name, b, c) values(?,?,?)"); ps.setString(1, "abc"); ps.setBlob(2, b); ps.setClob(3, c); ps.executeUpdate(); rs = stmt.executeQuery("select name, b, c from my_lob"); while (rs.next()) { System.out.println(rs.getString(1)); System.out.println(rs.getString(2)); System.out.println(rs.getString(3)); } // stmt.executeUpdate("delete from my_lob"); rs.close(); ps.close(); stmt.close(); conn.close(); } }