Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 394|回复: 0

[jsp学习]在web应用中配置HSQL数据库

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-1 04:59:21 | 显示全部楼层 |阅读模式
    看了雷霆论坛数据库部分,它是用的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();
         }

    %>

    OK!!!!



      
      
       
       

         
       

         
       
      



    源码下载:http://file.javaxxz.com/2014/10/1/045920891.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-2 06:28 , Processed in 0.434265 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表