目录结构
E:\Projects\Java\TestHsql.
├─src
│ └─com
│ └─qbq
│ DBUtil.java
│ PathServlet.java
│
└─WebRoot
├─index.jsp
│
├─META-INF
│ MANIFEST.MF
│
└─WEB-INF
├─lib.lck
├─lib.log
├─lib.properties
├─lib.script
├─web.xml
│
└─lib
commons-dbcp.jar
commons-pool.jar
hsqldb.jar
<Context path="/testhsql" docBase="E:/Projects/Java/TestHsql/WebRoot" debug="0" reloadable="true"> <Resource name="jdbc/hsql" auth="Container" type="javax.sql.DataSource" factory="org.apache.commons.dbcp.BasicDataSourceFactory" driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:hsql://localhost:8086/test" username="sa" password="123" initialSize="5" maxActive="5" maxIdle="5" maxWait="10000" removeAbandoned="true" logAbandoned="false" removeAbandonedTimeout="3000" poolPreparedStatements="true"/> </Context>
|
原来的web项目是HTServer。context节点没有内容。然后如上,我添加一段Resource ,内容很简单,也如上。 name 是命名。 auth 和 type ,factory都是 固定写法。 当然 若是要改进的话,可以换成自己喜欢的 数据源类。 我这里记得需要把 dbcp 数据源jar包拷贝到 tomat6 的lib 里面。
driverClassName 是 hsqldb的 driver类 名字。 url 是 hsqldb 服务器模式的写法。 这个随自己喜欢。 用户密码。
然后 initialSize 以及之后的所有参数。
然后添加 hsqldb 的jar包 到 tomcat6.0 的 lib下面。 启动tomcat 。 HTServer 项目里面就可以通过
Context ctx = new InitialContext();
String jndi_name="java:comp/env/jdbc/htlogdb";
DataSource ds = (DataSource)ctx.lookup(jndi_name); 就可以获取到了。
package com.qbq;
import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement;
import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource;
public class DBUtil { public void query() throws SQLException, NamingException { Connection conn = null; Statement stmt = null;
try { Context ctx = new InitialContext(); String jndi_name = "java:comp/env/jdbc/hsql"; DataSource ds = (DataSource) ctx.lookup(jndi_name); conn = ds.getConnection(); stmt = conn.createStatement();
/* * stmt.execute("create table test (name varchar)"); * stmt.execute("insert into test values('a')"); * stmt.execute("insert into test values('b')"); * stmt.execute("insert into test values('c')"); * stmt.execute("insert into test values('d')"); */
ResultSet rs = stmt.executeQuery("SELECT * FROM test");
while (rs.next()) {
System.out.println(rs.getObject(1));
}
ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount(); for (int i = 1; i <= count; i++) { System.out.println(rsmd.getColumnTypeName(i)); System.out.println(rsmd.getColumnName(i)); } } catch (SQLException e) { throw e; } catch (NamingException e) { throw e; } finally { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } }
|
阅读(2536) | 评论(0) | 转发(0) |