`
wangpan80
  • 浏览: 108812 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在web应用中配置HSQL数据库

阅读更多
 
一、   http://hsqldb.sourceforge.net/下载HSQL1.7.3,将其中的hsqldb.jar复制到你的web应用的WEB-INF/lib目录下。写一个属性文件lightningboard.properties,数据将存放在你的web应用TestHsql/hsqldb/lb_db下。
#---Database---
DB.DRIVER=org.hsqldb.jdbcDriver
DB.URL=jdbc:hsqldb:webapps/TestHsql/hsqldb/lb_db
DB.USER=sa
DB.PASSWORD=
DB.MAX_CONNECTIONS=30

二、写配置文件用来读上面的数据库配置
package lightningboard;

import java.util.Properties;
import java.io.InputStream;
import java.io.IOException;
/**
 * LightningBoard configuration, configuration file:
 *  "/lightningboard.properties".
 * @version 0.3.5
 * @author Xiaobo Liu
 */

public class Configuration {
    private Properties properties;
    private final static Configuration cfg = new Configuration();

    private Configuration() {
        properties = new Properties();
        InputStream is = null;
        try {
            is = getClass().getResourceAsStream("lightningboard.properties");
            properties.load(is);
        } catch (Exception exception) {
          System.out.println("Can't read the properties file. ");
        } finally {
            try {
                if (is != null)
                    is.close();
            } catch (IOException exception) {
                // ignored
            }
        }
    }
    
    public static Configuration getInstance() {
      return cfg;
    }
    
    public String getValue(String key) {
        return properties.getProperty(key);
    }
}
三、数据库连接管理器,从一个简单的连接池中获取连接。
package lightningboard.db;

import java.util.Vector;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import lightningboard.Configuration;

/**
 * Database Connection Manager
 * @version 0.3.5
 * @author Xiaobo Liu
 */
public class DBConnectionManager {
  private final static  DBConnectionManager instance=new DBConnectionManager();
  private DBConnectionPool pool;

  /**
   * Use singleton pattern, only return one instance of DBConnectionManager.
   * @return DBConnectionManager
   */
  public static DBConnectionManager getInstance() {
    return instance;
  }
  /**
   * Get a connection
   * @return Connection
   * @throws SQLException this method
   */
  public Connection getConnection() throws SQLException{
    return pool.getConnection();
  }
  /**
   * Free a connection
   * @param con connection
   * @throws SQLException this method
   */  public void freeConnection(Connection con)  throws SQLException{
    pool.freeConnection(con);

  }
  private DBConnectionManager() {
    init();
  }
  private void init() {
    Configuration cfg=Configuration.getInstance();
    String db_driver=cfg.getValue("DB.DRIVER");
    String db_url=cfg.getValue("DB.URL");
    String db_user=cfg.getValue("DB.USER");
    String db_password=cfg.getValue("DB.PASSWORD");
    int db_maxConn=Integer.parseInt(cfg.getValue("DB.MAX_CONNECTIONS"));
    try {
      Class.forName(db_driver);
    }
    catch (ClassNotFoundException ex) {
      System.out.println(ex);
    }
    pool = new DBConnectionPool(db_url,db_user,db_password,db_maxConn);
  }

  // inner class


  class DBConnectionPool {

  private Vector freeConnections = new Vector();
  private int maxConn;
  private int connNumb;

  private String URL;
  private String password;
  private String user;

        public DBConnectionPool(String URL, String user, String password,int maxConn) {
            this.URL = URL;
            this.user = user;
            this.password = password;
            this.maxConn = maxConn;
        }

        public synchronized void freeConnection(Connection con) {
            freeConnections.addElement(con);
            connNumb--;
            notifyAll();
        }

        public synchronized Connection getConnection() throws SQLException{
            Connection con = null;
            if (freeConnections.size() > 0) {
                con = (Connection) freeConnections.firstElement();
                freeConnections.removeElementAt(0);
                try {
                    if (con.isClosed()) {
                        con = getConnection();
                    }
                }
                catch (SQLException e) {
                      con = getConnection();
                }
            }
            else if (maxConn == 0 || connNumb < maxConn) {
                con = newConnection();
            }
            if (con != null) {
                connNumb++;
            }
            return con;
        }

        private Connection newConnection() throws SQLException{
            Connection con =DriverManager.getConnection(URL,user, password);
            return con;
        }
    }

}

四、下面是测试用的jsp文件:Testhsql.jsp,Testhsql1.jsp(请下载)

<%@ page contentType="text/html; charset=GBK" %>
<%@ page language="java" import="java.sql.*"%>
<%@ page import="lightningboard.db.DBConnectionManager" %>

<%
    DBConnectionManager dbcm = DBConnectionManager.getInstance();
    Connection conn=null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    String sql = null;
    try {
      conn=dbcm.getConnection();
      //
如果存在表user,删除
      sql="DROP TABLE IF EXISTS user";
      ps = conn.prepareStatement(sql);
      ps.executeUpdate();
      //
创建表
      sql = "CREATE TABLE USER(ID INTEGER,NAME VARCHAR(50),MOBILE CHAR(12))";
      ps = conn.prepareStatement(sql);
      ps.executeUpdate();
      //
插入数据
      sql = "INSERT INTO user VALUES(?,?,?)";
      ps = conn.prepareStatement(sql);
      ps.setInt(1, 1);
      ps.setString(2, "
张三");
      ps.setString(3,"13912345678");
      ps.executeUpdate();
      //
查询数据
      ps = conn.prepareStatement("SELECT * FROM user");
      rs = ps.executeQuery();
      while(rs.next()){
        out.println("ID:"+rs.getInt("id")+"<br>");
        out.println("
姓名:"+rs.getString("name")+"<br>");
out.println("
手机号:"+rs.getString("mobile"));
      }
    }
    finally{
      if(rs!=null)
        rs.close();
      if(ps!=null)
        ps.close();
      if(conn!=null)
        conn.close();
    }

%>
 
分享到:
评论

相关推荐

    hsql数据库详细教程

    【HSQL数据库详解】 HSQL(HyperSQL)数据库是一款轻量级、开源的Java数据库管理系统,适用于各种项目,尤其在Java开发环境中广受欢迎。它的特点是体积小巧,仅一个jar文件即可包含所有必需组件,如数据库引擎、...

    HSQL安装部署使用手册

    在你的`applicationcontext.xml`配置文件中,添加如下配置来创建一个基于Apache Commons DBCP的数据源,用于连接HSQL数据库: ```xml &lt;bean id="Hsql" class="org.apache.commons.dbcp.BasicDataSource"&gt; ...

    HSQL DB 在Web 应用下使用方法

    综上所述,HSQL DB是一款灵活、易用的数据库系统,特别适合在Web应用中作为临时数据库或测试环境使用。它的快速响应和低资源消耗使得它成为开发者们的首选之一。结合Spring等框架,可以轻松地集成到你的Web应用中,...

    Oracle数据库移植到HsqlDB操作手册.docx

    - **依赖库**:在Web应用的类路径中添加HsqlDB的JAR文件,确保能正确识别和连接数据库。 - **配置更改**:修改Spring等框架的数据库连接配置,包括URL、用户名、密码等,指向新的HsqlDB数据库。 - **启动服务**:...

    用maven构建SpringMVC+JPA+Hibernate+Hsql+jetty的web项目

    在测试阶段,可以利用Jetty启动Web应用,Hsql会在内存中运行数据库,整个流程将非常快捷。如果需要持久化数据,可以将Hsql配置为磁盘模式。 总的来说,这个项目展示了如何利用现代Java Web开发技术搭建一个完整的、...

    数据库 jdbc 驱动大全(oracle,sqlserver,sqlserver2005,mysql,hsql) 下载

    本文将详细介绍这些驱动以及如何在不同数据库中使用它们。 首先,Oracle JDBC驱动是Oracle数据库的官方驱动,它分为thin和thick两种类型。Thin驱动是一个纯Java实现,无需Oracle客户端软件,而Thick驱动则需要...

    Liferay_Portal数据持久

    - **完全的关系数据库**:支持 Java 对象,这意味着可以直接在数据库中存储 Java 对象。 - **支持多种 JDK 版本**:包括 JDK 1.1.x、1.2.x、1.3.x、1.4.x 以及更高版本。 - **高性能**:快速启动,并支持常见的 SQL ...

    dorado5快速入门

    - 介绍如何在项目中使用HSQL数据库。 - 提供HSQL数据库使用的参考文档和示例代码。 - **视图模型基本概念及实现类说明**: - 解释视图模型的基本概念及其在Dorado5中的作用。 - 详细介绍视图模型实现类的使用...

    Ext+HSQL_DEMO

    **标题:“Ext+HSQL_DEMO”** ...通过这个项目,开发者可以学习到如何使用Ext JS创建一个完整的前端应用,并与HSQLDB进行数据交互,理解前后端数据流动的过程,为构建实际的Web应用打下坚实的基础。

    Liferay6 官方培训学习笔记

    虽然HSQL数据库适合快速测试和开发,但在生产环境中,通常推荐使用更稳定的企业级数据库,如Oracle、SQL Server或MySQL。接下来,我们将以MySQL数据库为例,详细说明如何配置Liferay的数据库连接。 **步骤2.1:新建...

    JBossAS中文官方文档

    - **集成Tomcat**: 在JBoss中集成Tomcat作为Web容器的具体步骤,包括配置文件的调整和环境变量的设置等。 ##### 3. Duke银行应用构建与部署 - **构建过程**: 从准备文件、编译Java源代码、打包EJB和WAR文件等方面...

    JBoss中文文档 JBOSS服务器应用教材

    - 数据库配置,包括启用HSQL MBean、创建数据库模式及使用HSQL数据库管理工具。 - 部署应用至JBoss服务器。 - **JNDI和Java客户端**:讲解如何通过JNDI查找远程EJB对象,以及如何配置Java客户端以访问这些对象。 ...

    开源数据库软件hsqldb

    HSQldb,全称HyperSQL Database,是一款完全开源、免费的Java实现的关系型数据库管理系统(RDBMS),它支持多种运行环境,包括独立服务器模式、嵌入式模式以及Web应用。HSQldb因其轻量级、高性能和易于集成的特点,...

    jboss 中文开发文档

    - **企业应用中的 J2EE**:探讨了 J2EE 技术在企业级应用中的具体实现方式。 ##### 第四章:Duke 银行应用 - **构建应用**:详细介绍了 Duke 银行应用的构建流程,包括: - **准备文件**:列出构建过程中需要的...

    hsqldb随tomcat启动

    然后,在你的Web应用的`WEB-INF/web.xml`中,需要配置数据源的上下文初始化参数,这样应用才能访问到Tomcat中的数据源: ```xml &lt;web-app&gt; ... &lt;description&gt;HSQldb Datasource &lt;res-ref-name&gt;jdbc/hsqldbDB ...

    把一个javaweb应用包装成桌面应.doc

    综上所述,将Java Web应用转换为桌面应用主要涉及选择合适的嵌入式Web服务器和数据库、集成桌面特性、优化配置和加强安全性,以及最后的打包和发布步骤。这个过程需要充分考虑应用的特性和用户需求,以确保桌面版...

    dorado5快速入门(一)

    - **HSQL数据库介绍**:提供关于HSQL数据库的基本信息,以及如何在DORADO5中使用它的指导。 - **视图模型概念与实现类说明**:深入讲解视图模型的原理和实现方式,帮助开发者更好地理解其工作机制。 DORADO5不仅...

    配置FineReport报表服务器

    2. **配置web.xml**:在`WEB-INF`目录下的`web.xml`文件中,你需要添加以下配置来注册报表服务器的Servlet: ```xml &lt;servlet-name&gt;ReportServer &lt;servlet-class&gt;com.fr.web.ReportServlet&lt;/servlet-class&gt; ...

Global site tag (gtag.js) - Google Analytics