• 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");  
        }  
    }

  • 相关阅读:
    【BZOJ】4349: 最小树形图
    【AtCoder】AtCoder Petrozavodsk Contest 001
    【LOJ】#2525. 「HAOI2018」字串覆盖
    趣味题:恺撒Caesar密码(c++实现)
    趣味问题:画图(c++实现)
    趣味问题:到底买不买
    成绩大排队
    A除以B问题
    2017-统计字符个数
    2016-数据的交换输出
  • 原文地址:https://www.cnblogs.com/likwo/p/1755547.html
Copyright © 2020-2023  润新知