注册 登录
编程论坛 J2EE论坛

[分享]jsp连接数据库大全

bestlife 发布于 2005-08-15 10:52, 17553 次点击
现在有好多初学jsp的网友经常会问数据库怎么连接啊,怎么老出错啊?所以我集中的在这写篇文章供大家参考,其实这种把数据库逻辑全部放在jsp里未必是好的做法,但是有利于初学者学习,所以我就这样做了,当大家学到一定程度的时候,可以考虑用MVC的模式开发。在练习这些代码的时候,你一定将jdbc的驱动程序放到服务器的类路径里,然后要在数据库里建一个表test,有两个字段比如为test1,test2,可以用下面SQL建
create table test(test1 varchar(20),test2 varchar(20)
然后向这个表写入一条测试纪录
那么现在开始我们的jsp和数据库之旅吧。
一、jsp连接Oracle8/8i/9i数据库(用thin模式)
testoracle.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
二、jsp连接Sql Server7.0/2000数据库
testsqlserver.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
三、jsp连接DB2数据库
testdb2.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
四、jsp连接Informix数据库
testinformix.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
五、jsp连接Sybase数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
//tsdata为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
六、jsp连接MySQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
七、jsp连接PostgreSQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("org.postgresql.Driver").newInstance();
String url ="jdbc:postgresql://localhost/soft"
//soft为你的数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
八.Jsp 连接Access数据库
//Select.java
import java.sql.*;
public class Select{
public static void main(String[] args){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:shnxn","user","");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM member");
System.out.println("Got ResultSet Now");
//rs.beforeFirst();
while(rs.next()){
System.out.println(rs.getString(1)+"\t\t"+rs.getString(2));
}
stmt.close();
conn.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
116 回复
#52
guodi2006-05-24 06:03

我刚用J2SDK1.4和4.1TM联了
可发现装数据库时候 出问题
原来我的2000是4版本
要5的才行
请问SQL2000能在WINDOWS XP下安装吗

#53
chenxkfox2006-05-24 17:04

好帖子

#54
my_blue_sky2006-05-25 20:01

感谢,版主的一,二篇文章.对于我这们的小菜鸟来说帮助很大.谢谢.!

#55
my_blue_sky2006-05-25 20:09
还有一事要请教版主,就是我配置的TOMACT启不来.现象是这样的:
启动时,DOS界面一闪而过.也没有提示出错,好像是起来了.但是服务器不能用;在任务管理器中查看,tomact有运行.从任务管理器中结束进程后,再次起动时,就可能使用了.不知道为什么?请版主帮忙!
#56
ronger_70162006-05-28 11:25
顶,不过我把在ORACLE中的数据库连接放在JAVA中了,怎么出现
D:\Tomcat\webapps\myapp\WEB-INF\classes\bk\DatebaseBean.java:21: 未报告的异常 java.lang.InstantiationException;必须对其进行捕捉或声明以便抛出
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
啊?
在JAVA程序中,我是这样写的啊:
try
{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

}
catch(ClassNotFoundException ex)
{
ex.printStackTrace(System.err);
}
怎么会出现这种错误呢。》??
#57
疯一样的男子2006-06-07 20:35

我倒是不习惯直接把数据库的连接语句直接写到JSP页面里去。。都是写一个类。里面只声明一个
public static Connection getConnection()throws SQLException;这样一个东西。我觉得这样对于代码重用来说可能会好一点。。
超级菜鸟。大家多指教

#58
雨夜黑黑2006-06-18 18:01
不错,好久没来了,先向大家问个好!!!
是个学习的地方,谢谢版主们了
#59
雨夜黑黑2006-06-18 18:06
是的,把数据库的连接的语句封装在一个类里可以省我们很多麻烦,只用调用一下就可以了,不过我记得java中有这个类啊,可以看看,我一会去查查
有好的方法请及时与大家分享哦
#60
linpei232006-06-30 10:25
嗯,还有好多东西要学呀
谢谢楼主
#61
xqiang2006-07-04 09:13
刚学JSP,什么都不懂,

顶了先
#62
szjstar2006-07-05 09:06

楼主写的是第四类型驱动不错。。

#63
gady1002006-07-15 21:33

好东西一样要顶的!

#64
小毛驴儿2006-07-18 15:39
谢谢,好好研究一下,现在的工作还没有设计到数据库,不过马上就要建立数据库了
#65
行云cwx2006-07-21 17:35

jsp数据库连接问题
各位大侠好,我是JSP的初学者,今天我在调试jsp与SQL SERVER 2000 的连接时,只要我一连接就报错,错误内容如下:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: com.microsoft.jdbc.sql.server.SQLServerDriver
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.connecttest_jsp._jspService(connecttest_jsp.java:114)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.ClassNotFoundException: com.microsoft.jdbc.sql.server.SQLServerDriver
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1340)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1189)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:148)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:69)
java.lang.ClassLoader.loadClassInternal(Unknown Source)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
org.apache.jsp.connecttest_jsp._jspService(connecttest_jsp.java:77)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


--------------------------------------------------------------------------------

Apache Tomcat/5.0.28

我的配置是Tomcat5.0.28+jdk1.5.6
请问这个问题怎么解决?

#66
行云cwx2006-07-21 17:38

接第65楼
我jsp的连接代码是:
<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<%@ page import="java.sql.*,java.io.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>connecttest</title>
</head>
<body>
以下是从MS SQL Server数据库中读取的数据:<hr>
<table border=1>
<tr><td>id</td><td>书名</td><td>出版社</td><td>价格</td></tr>
<%!String trans(String str)
{
String result=null;
byte temp[];
try
{
temp=str.getBytes("gb2312");
result=new String(temp);
}
catch(java.io.UnsupportedEncodingException e)
{
System.out.println(e.toString());
}
return result;
}
%>
<%
Class.forName("com.microsoft.jdbc.sql.server.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
Connection conn=java.sql.DriverManager.getConnection(url,"sa","cwx,2006");
Statement stmt=conn.createStatement();
ResultSet rst=stmt.executeQuery("select * from book;");
while(rst.next()){%>
<%out.println("<tr>");
out.println("<td>"+trans(rst.getString("bookid"))+"</td>");
out.println("<td>"+trans(rst.getString("bookname"))+"</td>");
out.println("<td>"+trans(rst.getString("publisher"))+"</td>");
out.println("<td>"+rst.getFloat("price")+"</td>");
out.println("</tr>");%>
<%}%>
<%out.print("数据库操作成功,恭喜你");%>
<%//关闭连接、释放资源
rst.close();
stmt.close();
conn.close();
%>
</table>
</body>
</html>

#67
lanty52062006-07-22 18:26

建议还是用MVC吧.....会对你工作有帮助的...........

#68
程序BUG2006-07-31 13:39

收益非浅

#69
z1089799792006-08-15 17:19
#70
lihuifeng2006-08-23 18:45

顶!!!!!!!!!!!!!!!!!

#71
jxgxldl2006-09-05 14:42
good!
#72
hsjljh2006-09-15 08:11
谢谢
#73
lengxin2006-09-22 16:50
好啊,太有帮助了
#74
fhx0072006-09-22 20:43
楼主连mysql是不是老了点,现在不这么写了吧
#75
zyzpz2006-10-03 22:41

向你学习,好东西

#76
日落下一只狼2006-10-21 15:33

偶和65楼一样的错误~`

#77
xiaobie2006-11-10 12:51
呵呵!!!!!
#78
sonellee2006-11-12 10:28
品种齐全,可以满足各种口味。呵呵,收藏拉。谢谢
#79
WestNet2006-11-13 17:11

ding

#80
xiaoyao_20042006-11-15 17:16
#81
xiaoyao_20042006-11-15 17:17
#82
年少无知2006-11-16 21:13
#83
fqj7932006-12-09 11:17

你好,楼主,我的SQL SERVER的配置都是和你写的一样,前几个月是可以的,但自从上次换了一台服务器后,就不能访问数据库了,提示信息如图:

[IMG]f:\error.jpg[/IMG]
#84
fqj7932006-12-09 11:22

对了,和65楼是一样的,不知出了什么问题

#85
heheli2007-01-16 08:17
#86
ailijia3652007-02-11 14:32
SQL2000的驱动程序是哪个啊
#87
chaoren20072007-03-05 14:48
#88
being2007-03-29 14:34
我想问一下, 我的机器上同时安装了sql server 2000 和 2005

用jdbc连接的时候,,弄死了也不出来,,各位高人有没有什么办法,,用jdbc连接上,,,,
谢谢了!

#89
wolf52102007-04-13 13:25
当大家学到一定程度的时候,可以考虑用MVC的模式开发。在练习这些代码的时候,你一定将jdbc的驱动程序放到服务器的类路径里,

服务器的类路径 是什么啊
哪个高手给指点一下
#90
Kiss_Anna2007-05-01 01:25
那么我请想问一下,用jdbc如何连接其它机子上的数据库?
#91
rongjing2007-05-08 10:41
#92
hackboyo2007-05-15 21:07
学习JSP
#93
victoryhui2007-05-17 22:55

看来得好好学习,好多不懂的东西哦、、、

#94
laoshu12007-05-21 19:37
学习学习!JSP新手!一直想从ASP到JSP转换
#95
SPOTO2007-05-24 16:06
回复:(bestlife)[分享]jsp连接数据库大全

楼主非常有心。。。顶~~~

#96
xcf8603172007-05-24 19:21
ODBC 是用在局域网的好好 那样是看不出它的速度慢的但是要是有上千个人同时浏览和登陆你的服务器 那么 你的服务器是会崩溃的 配制麻烦但是很好用的 狂踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩踩
4楼的
#97
狂编2007-05-29 09:30
#98
lanyingcangl2007-05-30 14:45
不错,顶起
#99
milojomn22007-06-11 19:52
楼主写得很好哦!
我是初学者,不过我看得很明白!
谢谢了!
#100
anne0613i2007-06-13 20:21
有点看不懂````
#101
信飞鸟1232007-06-14 22:18

楼主正在找人帮我看呢,你帮我看看,我调试上面的一个例子,是sql2000的那个代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
<%@ Page import="java.sql.*"%>
<html>
<head>
<title>无标题文档</title>
</head>

<body>
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver:XING-AE809AD14D;DataaseName=sql";//我的数据库的名字和表名都对的
String user="sa";String password="";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from student";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){%>
第一个字节内容为:<%=rs.getString(1)%>
第二个字节内容为:<%=rs.getString(2)%>
<%}%>
<%out.print("数据库连接成功");%>
<%rs.close();
stmt.close();
con.close();
%>
</body>
</html>

显示结果如下:
org.apache.jasper.compiler.ParseException: D:\Tomcat 6.0\jakarta-tomcat\webapps\myapp\sjk.jsp(1,4) Invalid directive
at org.apache.jasper.compiler.Parser$Directive.accept(Parser.java:186)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1070)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1035)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1031)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:182)
at org.apache.jasper.servlet.JspServlet.doLoadJSP(JspServlet.java:453)
at org.apache.jasper.servlet.JasperLoader12.loadJSP(JasperLoader12.java:146)
at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:424)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:152)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:164)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:309)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:382)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:387)
at org.apache.tomcat.core.Handler.service(Handler.java:263)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:371)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:786)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:732)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:210)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:407)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:498)
at java.lang.Thread.run(Thread.java:595)

我都不知道是哪错了,我是新学JSP的

123