注册 登录
编程论坛 J2EE论坛

jsp与mysql数据库链接问题!

wenbin171 发布于 2007-11-07 17:59, 5036 次点击
//这是jsp链接文件:
<%@ page contentType="text/html; charset=gb2312" %>

<%@ page language="java" %>

<%@ page import="com.mysql.jdbc.Driver" %>

<%@ page import="java.sql.*" %>

<%

//驱动程序名

String driverName="com.mysql.jdbc.Driver";

//数据库用户名

String userName="root";

//密码

String userPasswd="wenbin";

//数据库名

String dbName="first";

//表名

String tableName="about";

//联结字符串

String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection connection=DriverManager.getConnection(url);

Statement statement = connection.createStatement();

String sql="SELECT * FROM "+tableName;

ResultSet rs = statement.executeQuery(sql);

//获得数据结果集合

ResultSetMetaData rmeta = rs.getMetaData();

//确定数据集的列数,亦字段数

int numColumns=rmeta.getColumnCount();

// 输出每一个数据值

out.print("id");

out.print("|");

out.print("num");

out.print("<br>");

while(rs.next()) {

out.print(rs.getString(1)+" ");

out.print("|");

out.print(rs.getString(2));

out.print("<br>");

}

out.print("<br>");

out.print("数据库操作成功,恭喜你");

rs.close();

statement.close();

connection.close();

%>




//以上代码有错吗?运行起来总报错:


HTTP Status 500 -

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

type Exception report

message

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

exception

org.apache.jasper.JasperException: Unable to compile class for JSP:


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:85)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:415)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:308)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


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


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

Apache Tomcat/6.0.10



//各位,请帮忙看看!先谢谢了!
29 回复
#2
hardes2007-11-07 18:05
受不鸟LZ了
你好歹也写个类稍微封装下你的数据库连接啊!!也方便调试!!
你这么一大堆全写在jsp页面里,HoHo
看得我老人家眼睛都晕了!!哈哈
写个类封装下吧,这是个小问题,你自己检查下就可以解决的,动下脑筋嘛!!

#3
wenbin1712007-11-08 13:41
我是刚学的。不太会!你们帮帮我嘛!
#4
hjlwlyhjl2007-11-08 14:00

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection connection=DriverManager.getConnection(url);

Statement statement = connection.createStatement();

String sql="SELECT * FROM "+tableName;

ResultSet rs = statement.executeQuery(sql);

以上的这些语句都会抛出异常的,你用try,catch语句捕获 一下异常试试!

#5
wenbin1712007-11-08 14:13
加上try,catch语句捕获:
错误如下:

type Exception report

message

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

exception

org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:154)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

org.apache.jasper.JasperException: Unable to load class for JSP
    org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:600)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:142)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.ClassNotFoundException: org.apache.jsp.test.first_jsp
    java.net.URLClassLoader$1.run(Unknown Source)
    java.security.AccessController.doPrivileged(Native Method)
    java.net.URLClassLoader.findClass(Unknown Source)
    org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
    org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
    org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:598)
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:142)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

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


#6
wenbin1712007-11-08 14:15
是不是我的mysql数据库有问题?
#7
hjlwlyhjl2007-11-08 15:10
String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd;

这需要加上端口号的,同时要注意的是:一定要确认mysql驱动安装路径正确!
#8
hardes2007-11-08 15:47

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBConnection {
private static Connection conn = null;

static
{
try
{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}

public static Connection getConnection()
{
String url = "jdbc:mysql://localhost:3306/first";
String user="root";
String password="wenbin";
try
{
conn = DriverManager.getConnection(url,user,password);
}catch(SQLException e){
e.printStackTrace();
}
return conn;
}


public static void close()
{
if(conn!=null)
{
try
{
conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}

public void printResult(String tbName)
{
PreparedStatement stm = null;
String sql = "select * from "+tbName;
try
{
stm = getConnection().prepareStatement(sql);
ResultSet rss = stm.executeQuery();
while(rss.next())
{
System.out.print(rss.getString(1)+"|");
System.out.print(rss.getString(2)+"|");
System.out.print(rss.getString(3));
}
}catch(SQLException e){
e.printStackTrace();
}finally{
close();
}
}
public static void main(String[] args) {
new DBConnection().printResult("about");
//你将这段代码运行看看,是不是有数据输出.
//表名,数据库用户以及密码我都按照你的写的,你用改了直接运行看看

}

}

#9
wenbin1712007-11-08 16:02
我用的端口是8080:
3306不用能。
http://localhost:8080/test.jsp

把程序都给输入了:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DBConnection { private static Connection conn = null; static { try { Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundException e){ e.printStackTrace(); } } public static Connection getConnection() { String url = "jdbc:mysql://localhost:8080/first"; String user="root"; String password="wenbin"; try { conn = DriverManager.getConnection(url,user,password); }catch(SQLException e){ e.printStackTrace(); } return conn; } public static void close() { if(conn!=null) { try { conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } public void printResult(String tbName) { PreparedStatement stm = null; String sql = "select * from "+tbName; try { stm = getConnection().prepareStatement(sql); ResultSet rss = stm.executeQuery(); while(rss.next()) { System.out.print(rss.getString(1)+"|"); System.out.print(rss.getString(2)+"|"); System.out.print(rss.getString(3)); } }catch(SQLException e){ e.printStackTrace(); }finally{ close(); } } public static void main(String[] args) { new DBConnection().printResult("about"); //你将这段代码运行看看,是不是有数据输出. //表名,数据库用户以及密码我都按照你的写的,你用改了直接运行看看 } }
#10
wenbin1712007-11-08 16:07

对不起! 我傻掉了。忘<%%>了

#11
wenbin1712007-11-08 16:10
和以前一样,你们说是什么问题!


type Exception report

message

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

exception

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 6 in the jsp file: /testdb3.jsp
Syntax error on token "import", assert expected
3: <html> 
4: <body> 
5: <%
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;


An error occurred at line: 6 in the jsp file: /testdb3.jsp
java.sql.Connection cannot be resolved
3: <html> 
4: <body> 
5: <%
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;


An error occurred at line: 7 in the jsp file: /testdb3.jsp
Syntax error on token "import", assert expected
4: <body> 
5: <%
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;


An error occurred at line: 7 in the jsp file: /testdb3.jsp
java.sql.DriverManager cannot be resolved
4: <body> 
5: <%
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;


An error occurred at line: 8 in the jsp file: /testdb3.jsp
Syntax error on token "import", assert expected
5: <%
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 


An error occurred at line: 8 in the jsp file: /testdb3.jsp
java.sql.PreparedStatement cannot be resolved
5: <%
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 


An error occurred at line: 9 in the jsp file: /testdb3.jsp
Syntax error on token "import", assert expected
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 
12: public class DBConnection {


An error occurred at line: 9 in the jsp file: /testdb3.jsp
java.sql.ResultSet cannot be resolved
6: import java.sql.Connection;
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 
12: public class DBConnection {


An error occurred at line: 10 in the jsp file: /testdb3.jsp
Syntax error on token "import", assert expected
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 
12: public class DBConnection {
13: private static Connection conn = null;


An error occurred at line: 10 in the jsp file: /testdb3.jsp
java.sql.SQLException cannot be resolved
7: import java.sql.DriverManager;
8: import java.sql.PreparedStatement;
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 
12: public class DBConnection {
13: private static Connection conn = null;


An error occurred at line: 12 in the jsp file: /testdb3.jsp
Illegal modifier for the local class DBConnection; only abstract or final is permitted
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 
12: public class DBConnection {
13: private static Connection conn = null;
14: 
15: static


An error occurred at line: 12 in the jsp file: /testdb3.jsp
Cannot define static initializer in inner type DBConnection
9: import java.sql.ResultSet;
10: import java.sql.SQLException;
11: 
12: public class DBConnection {
13: private static Connection conn = null;
14: 
15: static


An error occurred at line: 25 in the jsp file: /testdb3.jsp
The method getConnection cannot be declared static; static methods can only be declared in a static or top level type
22: }
23: }
24: 
25: public static Connection getConnection()
26: {
27: String url = "jdbc:mysql://localhost:8080/first";
28: String user="root";


An error occurred at line: 40 in the jsp file: /testdb3.jsp
The method close cannot be declared static; static methods can only be declared in a static or top level type
37: }
38: 
39: 
40: public static void close()
41: {
42: if(conn!=null)
43: {


An error occurred at line: 73 in the jsp file: /testdb3.jsp
The method main cannot be declared static; static methods can only be declared in a static or top level type
70: close();
71: }
72: }
73: public static void main(String[] args) {
74: new DBConnection().printResult("about");
75: //你将这段代码运行看看,是不是有数据输出.
76: //表名,数据库用户以及密码我都按照你的写的,你用改了直接运行看看


Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:85)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:415)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:308)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:308)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

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

#12
hardes2007-11-08 16:22
一个是数据库mysql的端口号
一个是tomcat的端口号
不一样的,你不用改了
唉!!哈哈.....
#13
wenbin1712007-11-08 16:32
还是不行。我要哭了!
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at DBConnection.<clinit>(DBConnection.java:14)
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DBConnection.getConnection(DBConnection.java:27)
at DBConnection.printResult(DBConnection.java:54)
at DBConnection.main(DBConnection.java:69)
Exception in thread "main" java.lang.NullPointerException
at DBConnection.printResult(DBConnection.java:54)
at DBConnection.main(DBConnection.java:69)
#14
hardes2007-11-08 16:37
类找不到,驱动包放什么地方了你
找到你的工程文件,在文件的WEB-INF/lib中放一个驱动包
在不行的话放一个在你的jdk的jre\lib\ext目录中放一个驱动包
在不行的话在你的Tomcat的common\lib目录中放一个驱动包
在不行的话,我也快不行了!!哈哈
#15
wenbin1712007-11-08 16:50

呵,人太笨了,没办法!
#16
luoxian_20032007-11-08 17:38
发现一个问题,美女在这里提问,解答的人一大堆!呵呵
#17
wenbin1712007-11-08 18:04
打你,乱说话!
#18
hjlwlyhjl2007-11-08 20:09
回复:(luoxian_2003)发现一个问题,美女在这里提问...
是美女呀? 哥们你要是不说还真不知道呢! 呵呵!
#19
wenbin1712007-11-09 09:40

问题还没有解决,请大家多多指教啊!

#20
wenbin1712007-11-09 09:49

大家来顶啊!

#21
hopemosue2007-11-16 09:11
我怎么发现你把谁的端口都不怎么分啊,别人说你要加3306,
你说你是8080,一个是你的服务器的端口,一个是你sql服务器的端口,两者怎么能混淆呢
真有你的,
还有你要听听上面那位的忠告啊,写程序要有个好的习惯,你看你写的有点乱啊
别人想给你看看的,一看那么乱多跑了估计
#22
wenbin1712007-11-16 16:47

呵!,我刚接触jsp,不太清楚!
谢谢你的教训.
那我现在应该怎么做啊!

#23
hardes2007-11-16 16:50

被别人训了,哈哈
21楼的弟兄好凶哦,对女生温柔点撒

#24
wenbin1712007-11-16 16:52
呵呵!没关系的!
#25
hardes2007-11-16 16:54
这么好的脾气不想着方的讨回家做老婆真可惜!!
哈哈
#26
wenbin1712007-11-16 16:57
别虾说话,不然不理你了.快给我解决问题!
#27
wenbin1712007-11-19 11:27
自己顶
#28
青格儿2007-11-20 08:26
我也遇到了这样的问题!都2天了,还没解决呢!再帮你顶下!
#29
wenbin1712007-11-20 10:06

你也还没有解决吗?
呵呵,我是初学者,太笨了,又加上有时候没有时间.也到现在还没有解决.把一个网友都给累坏了.真是过意不去.
所以,这些问题最主要还是在自己,不能总是依赖着别人,自己就不去动脑筋.这样下去,还学不学了.
不过这个论坛还真的不错,热心的朋友还真的挺多.
呵!

#30
走刀口→超2007-11-23 14:59
- -倒`

3306是MYSQL的端口号。8080是HTTP的端口号。

正常了么?
1