近來對連接池產生了興趣,就自己動手試了試,本以為自己寫的連接池沒有問題,結果和同學交流,他說我雖然寫了連接池,可是在編程時并沒有用到,本人比較懶,所以就沒有修改,想直接使用tomcat的連接池就好.
首先修改server.xml文件:
<context path="" docbase="my site" debug="0" reloadable="true" crosscontext="true" privileged="true">
<resource name="jdbc/access" auth="container" type="javax.sql.datasource"/>
<resourceparams name="jdbc/access">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.basicdatasourcefactory</value>
</parameter>
<parameter>
<name>driverclassname</name>
<value>sun.jdbc.odbc.jdbcodbcdriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:odbc:patent</value>
</parameter>
<parameter>
<name>username</name>
<value></value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>maxactive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxidle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxwait</name>
<value>-1</value>
</parameter>
</resourceparams>
</context>
原以為用access還要下載驅動程序,其實自帶了,害得我還上網找了好久,因為sql就需要自己去下載數據庫驅動.
修改完配置文件,就可以使用連接池進行數據庫操作了,自己寫了個bean,使用起來能方便些:
package sql;
import javax.naming.context;
import javax.sql.datasource;
import javax.naming.initialcontext;
import java.sql.*;
import javax.sql.*;
public class dbpool
{
datasource ds = null;
connection conn = null;
resultset rs = null;
statement stmt=null;
public dbpool(){
try
{
context initctx = new initialcontext();
context envctx = (context)initctx.lookup("java:comp/env");
ds = (datasource)envctx.lookup("jdbc/access");
conn=ds.getconnection();
stmt=conn.createstatement();
}
catch (sqlexception e)
{
system.err.println("db sql error:"+e.getmessage());
}
catch(exception e){
system.err.println("dbpool():"+e.getmessage());
}
}
public boolean executeupdate(string sql){
try
{
stmt.executeupdate(sql);
return true;
}
catch (sqlexception e)
{
system.err.println("executeupdate:"+e.getmessage());
}
return false;
}
public resultset executequery(string sql){
rs=null;
try
{
rs=stmt.executequery(sql);
}
catch (sqlexception ex)
{
system.err.println("executequery:"+ex.getmessage());
}
return rs;
}
public void close(){
try
{
rs.close();
stmt.close();
conn.close();
}
catch (exception e)
{
system.out.println(e.tostring());
}
}
}
編譯通過就可以使用了,做個頁面測試一下:
<%@ page contenttype="text/html; charset=gb2312" language="java" import="java.sql.*" errorpage="" %>
<jsp:usebean id="data" scope="page" class="sql.dbpool"/>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<title>untitled document</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
</head>
<body>
<table width="100%" border="1">
<tr>
<td align="center">標 題</td>
<td width="30%" align="center">發布時間</td>
</tr>
<%
resultset rs = null;
rs = data.executequery("select tittle,publictime from news");
while(rs.next()){
string tittle=rs.getstring("tittle");
string ptime=rs.getstring("publictime");
%>
<tr>
<td align="center"><%=tittle%></td>
<td align="center"><%=ptime.substring(0,10)%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
<%
data.close();
%>
頁面正常顯示,通過!!心情舒暢,回去繼續改我自己寫的連接池,呼呼!!!
新聞熱點
疑難解答