h2 基本知识1

一)H2文件结构:

————————————————————————————————

-h2
  -bin
    h2-1.1.116.jar //H2主文件(驱动也在里面)
    h2.bat         //H2控制台启动程序带黑屏窗口(for Windows)
    h2.sh          //H2控制台启动程序(for Linux)
    h2w.bat        //H2控制台启动程序不带黑屏窗口(for Windows)
  +docs //文档文件夹(内有手册)
  +service
  +src  //开源的吗,带源代码
  build.bat
  build.sh
  build.xml

————————————————————————————————

(二)Eclipse/MyEclipse中引入H2驱动

在指定项目中右键 -> Peoperties -> Java Build Path -> Libraries -> Add External JARs -> 引入h2-1.1.116.jar

(三)使用内存模式(关闭后内容全部消失,速度非常快):

 

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.SQLException;  
import java.sql.Statement;  
public class MenTest{  
public void runInsertDelete(){  
    try{  
        String sourceURL="jdbc:h2:tcp://localhost/mem:testmemdb";//H2DB mem mode  
                String user="sa";   
                String key="";  
        try{     
        Class.forName("org.h2.Driver");//HSQLDB Driver   
        }catch(Exception e){     
        e.printStackTrace();     
        }    
        Connection conn=DriverManager.getConnection(sourceURL,user,key);//把驱动放入连接  
        Statement stmt=conn.createStatement();  
                //创建一个 Statement 对象来将 SQL 语句发送到数据库。  
        //stmt.executeUpdate("DELETE FROM mytable WHERE name=\'NO.2\'");  
                //执行方法找到一个与 methodName 属性同名的方法,并在目标上调用该方法。  
        //stmt.execute("CREATE TABLE idtable(id INT,name VARCHAR(100));");  
        stmt.execute("INSERT INTO idtable VALUES(1,\'MuSoft\')");  
        stmt.execute("INSERT INTO idtable VALUES(2,\'StevenStander\')");  
        stmt.close();  
        conn.close();  
                    
    }catch(SQLException sqle){  
                System.out.println("SQL ERROR!");     
    }  
 
     }  
public void query(String SQL){  
    try{  
      String sourceURL="jdbc:h2:tcp://localhost/mem:testmemdb";  
      String user="sa";  
      String key="";       
          
      try{     
          Class.forName("org.h2.Driver");     
          }catch(Exception e){     
           e.printStackTrace();     
       }    
      Connection conn=DriverManager.getConnection(sourceURL,user,key);//把驱动放入连接  
      Statement stmt=conn.createStatement();//创建一个 Statement 对象来将 SQL 语句发送到数据库。  
      ResultSet rset=stmt.executeQuery(SQL);//执行方法找到一个与 methodName 属性同名的方法,并在目标上调用该方法。  
      while(rset.next())  
      {           
            System.out.println(rset.getInt("id")+"  "+rset.getString("name"));        
      }  
      rset.close();  
      stmt.close();  
      conn.close();  
    }catch(SQLException sqle){  
          System.err.println(sqle);  
  }  
 }  
        public static void main(String args[]){  
            MenTest mt=new MenTest();  
           mt.runInsertDelete();  
            mt.query("SELECT * FROM idtable");  
        }  
}


(四)使用Embedded模式(Create,Insert,Delete...):

 

import java.sql.*;  
 
public class UpdateTest {  
    public void runInsertDelete() {  
        try {  
            String sourceURL = "jdbc:h2:h2/bin/mydb";// H2 database  
            String user = "sa";  
            String key = "";  
            try {  
                Class.forName("org.h2.Driver");// H2 Driver  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            Connection conn = DriverManager.getConnection(sourceURL, user, key);  
            Statement stmt = conn.createStatement();  
            stmt.execute("CREATE TABLE mytable(name VARCHAR(100),sex VARCHAR(10))");  
            stmt.executeUpdate("INSERT INTO mytable VALUES('Steven Stander','male')");  
            stmt.executeUpdate("INSERT INTO mytable VALUES('Elizabeth Eames','female')");  
            stmt.executeUpdate("DELETE FROM mytable WHERE sex=\'male\'");  
            stmt.close();  
            conn.close();  
 
        } catch (SQLException sqle) {  
            System.err.println(sqle);  
        }  
    }  
 
    public static void main(String args[]) {  
        new UpdateTest().runInsertDelete();  
    }  
}


(五)使用Embedded模式(Select):

import java.sql.*;  
 
public class SelectTest {  
    public void query(String SQL) {  
        try {  
            String sourceURL = "jdbc:h2:h2/bin/mydb";  
            String user = "sa";  
            String key = "";  
 
            try {  
                Class.forName("org.h2.Driver");  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            Connection conn = DriverManager.getConnection(sourceURL, user, key);  
            Statement stmt = conn.createStatement();  
            ResultSet rset = stmt.executeQuery(SQL);  
            while (rset.next()) {  
                System.out.println(rset.getString("name")+ "  "+rset.getString("sex"));  
            }  
            rset.close();  
            stmt.close();  
            conn.close();  
        } catch (SQLException sqle) {  
            System.err.println(sqle);  
        }  
    }  
 
    public static void main(String args[]) {  
        Test tt = new Test();  
        tt.query("select * from mytable");  
    }  
}

原文地址:https://www.cnblogs.com/likwo/p/1755547.html