一、 从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(HyperSQL)数据库是一款轻量级、开源的Java数据库管理系统,适用于各种项目,尤其在Java开发环境中广受欢迎。它的特点是体积小巧,仅一个jar文件即可包含所有必需组件,如数据库引擎、...
在你的`applicationcontext.xml`配置文件中,添加如下配置来创建一个基于Apache Commons DBCP的数据源,用于连接HSQL数据库: ```xml <bean id="Hsql" class="org.apache.commons.dbcp.BasicDataSource"> ...
综上所述,HSQL DB是一款灵活、易用的数据库系统,特别适合在Web应用中作为临时数据库或测试环境使用。它的快速响应和低资源消耗使得它成为开发者们的首选之一。结合Spring等框架,可以轻松地集成到你的Web应用中,...
- **依赖库**:在Web应用的类路径中添加HsqlDB的JAR文件,确保能正确识别和连接数据库。 - **配置更改**:修改Spring等框架的数据库连接配置,包括URL、用户名、密码等,指向新的HsqlDB数据库。 - **启动服务**:...
在测试阶段,可以利用Jetty启动Web应用,Hsql会在内存中运行数据库,整个流程将非常快捷。如果需要持久化数据,可以将Hsql配置为磁盘模式。 总的来说,这个项目展示了如何利用现代Java Web开发技术搭建一个完整的、...
本文将详细介绍这些驱动以及如何在不同数据库中使用它们。 首先,Oracle JDBC驱动是Oracle数据库的官方驱动,它分为thin和thick两种类型。Thin驱动是一个纯Java实现,无需Oracle客户端软件,而Thick驱动则需要...
- **完全的关系数据库**:支持 Java 对象,这意味着可以直接在数据库中存储 Java 对象。 - **支持多种 JDK 版本**:包括 JDK 1.1.x、1.2.x、1.3.x、1.4.x 以及更高版本。 - **高性能**:快速启动,并支持常见的 SQL ...
- 介绍如何在项目中使用HSQL数据库。 - 提供HSQL数据库使用的参考文档和示例代码。 - **视图模型基本概念及实现类说明**: - 解释视图模型的基本概念及其在Dorado5中的作用。 - 详细介绍视图模型实现类的使用...
**标题:“Ext+HSQL_DEMO”** ...通过这个项目,开发者可以学习到如何使用Ext JS创建一个完整的前端应用,并与HSQLDB进行数据交互,理解前后端数据流动的过程,为构建实际的Web应用打下坚实的基础。
虽然HSQL数据库适合快速测试和开发,但在生产环境中,通常推荐使用更稳定的企业级数据库,如Oracle、SQL Server或MySQL。接下来,我们将以MySQL数据库为例,详细说明如何配置Liferay的数据库连接。 **步骤2.1:新建...
- **集成Tomcat**: 在JBoss中集成Tomcat作为Web容器的具体步骤,包括配置文件的调整和环境变量的设置等。 ##### 3. Duke银行应用构建与部署 - **构建过程**: 从准备文件、编译Java源代码、打包EJB和WAR文件等方面...
- 数据库配置,包括启用HSQL MBean、创建数据库模式及使用HSQL数据库管理工具。 - 部署应用至JBoss服务器。 - **JNDI和Java客户端**:讲解如何通过JNDI查找远程EJB对象,以及如何配置Java客户端以访问这些对象。 ...
HSQldb,全称HyperSQL Database,是一款完全开源、免费的Java实现的关系型数据库管理系统(RDBMS),它支持多种运行环境,包括独立服务器模式、嵌入式模式以及Web应用。HSQldb因其轻量级、高性能和易于集成的特点,...
- **企业应用中的 J2EE**:探讨了 J2EE 技术在企业级应用中的具体实现方式。 ##### 第四章:Duke 银行应用 - **构建应用**:详细介绍了 Duke 银行应用的构建流程,包括: - **准备文件**:列出构建过程中需要的...
然后,在你的Web应用的`WEB-INF/web.xml`中,需要配置数据源的上下文初始化参数,这样应用才能访问到Tomcat中的数据源: ```xml <web-app> ... <description>HSQldb Datasource <res-ref-name>jdbc/hsqldbDB ...
综上所述,将Java Web应用转换为桌面应用主要涉及选择合适的嵌入式Web服务器和数据库、集成桌面特性、优化配置和加强安全性,以及最后的打包和发布步骤。这个过程需要充分考虑应用的特性和用户需求,以确保桌面版...
- **HSQL数据库介绍**:提供关于HSQL数据库的基本信息,以及如何在DORADO5中使用它的指导。 - **视图模型概念与实现类说明**:深入讲解视图模型的原理和实现方式,帮助开发者更好地理解其工作机制。 DORADO5不仅...
2. **配置web.xml**:在`WEB-INF`目录下的`web.xml`文件中,你需要添加以下配置来注册报表服务器的Servlet: ```xml <servlet-name>ReportServer <servlet-class>com.fr.web.ReportServlet</servlet-class> ...