最近在看关于jsp的东西,在用jsp连接pgsql的时候遇到了点麻烦,现在总结如下,希望给以后用到的朋友提供点帮助。
环境为:Windows2003+Tomcat 6.0+PostgreSQL8.3
总的来说有两种方式,一个是直接连接,另一个是用数据池。前一种容易配些,但效率不如后者。无论那种连接必须要把JDBC驱动拷到TOMCAT的LIB目录下.开始之前先建一个待连接的数据库,就简单点吧。
代码如下:
1.create database test;
2.create table test(nmae varchar(10),address varchar(30));
3.insert into test values('xisxy','qindao China');
一、直接连接:
test1.jsp文件内容如下:
Test Db
// ***************** 数据库连接代码 开始 *****************
Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/test" ;
String user="postgres";
String password="kfictao";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt = conn.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql = "select name,address from test";
ResultSet rs=stmt.executeQuery(sql);
// **** 数据库连接代码 结束 *********
if(rs!=null){
rs.next();
out.print(rs.getString(1)+" live in ");
out.print(rs.getString(2));
}
else{
out.print("Table is empty!");
}
%>
运行成功的话,看到运行结果为:xisxy live in qingdao China
二、数据池连接
1.配置tomcat数据池,这一步比较关键的是引用已定义的data resource资源。我前几次没成功就是错在这个地方。
a.
定义data resource资源,可以定义全局的,也可以定义某应用程序专用的,咱们这里定义一个全局的。
在tomcat安装目录下,有个conf文件夹,找到并打开server.xml,在标签前加入
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://127.0.0.1/test"
username="postgres" password="12345" maxActive="20" maxIdle="10" maxWait="-1"/>
b.
找到并打开web.xml,在前加入代码:
DB Connection
jdbc/postgres
javax.sql.DataSource
Container
c.
找到并打开content.xml,在前加入代码:
jdbc/pgsql" type="javax.sql.DataSource"/>
注:更改TOMCAT的配置文件后,要重启下服务才能生效.
2.
test2.jsp内容如下:
Test Db
// ***************** 数据库连接代码 开始 *****************
DataSource ds = null;
InitialContext ctx=new InitialContext();
ds=(DataSource)ctx.lookup("java:comp/env/jdbc/pgsql");//*****这里pgsql为定义的名字***** Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
String sql = "select name,address from test;
ResultSet rs=stmt.excuteQuery(sql);
// **** 数据库连接代码 结束 *********
if(rs!=null){
rs.next();
out.print(rs.getString(1)+" live in ");
out.print(rs.getString(2));
}
else{
out.print("Table is empty!");
}
%>
运行成功的话,看到运行结果为:xisxy live in qingdao China
阅读(1609) | 评论(0) | 转发(0) |