帮我解决了这个问题,全部家当(200)都给他!!
我的机子已经正常运行jsp,我想用jsp+javabean+sql编制程序,但总不能成功!
我的代码如下:
注:路径问题我已解决,(但能附上路径最好)
java文件
package select;
/**
* <p>Title: JSP模式学习</p>
* <p>Description: 数据库的相关操作:如连接、查询、添加、删除、修改</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author 胡辉
* @version 1.0
*/
import java.sql.*;
import java.io.*;
import java.util.*;
public class select {
//数据库驱动程序
private String strDriver = "";
//数据库连接字符串
private String strURL = "";
//数据库用户名
private String username = "";
//数据库密码
private String password = "";
private Connection conn = null;
private Statement stmt = null;
ResultSet rs = null;
String sql=null;
public ResultSet select(String strDriver,String strURL) {
try{
Class.forName(strDriver);
}catch(java.lang.ClassNotFoundException e) {
System.err.println("数据库连接错误:" + e.getMessage());
//return false;
}
try{
conn=DriverManager.getConnection(strURL,username,password);
}catch(SQLException ex) {
System.err.println("数据库连接错误:" + ex.getMessage());
}
//}
/** 显示数据
sql="select * from fuser";
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}catch(SQLException ex) {
System.err.println("数据库查询错误:" + ex.getMessage());
}
return rs;
}
}
.jsp文件
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="db" class="select.select" scope="page"/>
<html>
<body>
<%
String strDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
//数据库连接字符串
String strURL = "jdbc:microsoft:sqlserver://hz:1433;User=sa;Password=sa;DatabaseName=test";
//数据库用户名
String username = "sa";
//数据库密码
String password = "sa";
ResultSet res=db.select(strDriver,strURL)
while(res.next())
out.println("数据为:"+getGBString(res.getString(2)));}
%>
</body>
</html>
java文件编译没出错,运行jsp文件就出错
搞了快一个星期了,真是我的一块新病哦!!
问题点数:100、回复次数:30Top
1 楼zhutouzip(醒了的鸟)回复于 2005-04-02 14:48:13 得分 10
while(res.next())
out.println("数据为:"+getGBString(res.getString(2)));}
前面少了一个大括号{!
你的具体错误是什么,贴出来看看!Top
2 楼sjg008(基本靠UP)回复于 2005-04-02 14:56:42 得分 80
你jsp中这一句
ResultSet res=db.select(strDriver,strURL)
并没有把username 和 password传进去啊
那么你在javabean中
conn=DriverManager.getConnection(strURL,username,password); 又哪来的username,password?
怎么能得到连接?Top
3 楼java0514(hehe)回复于 2005-04-02 14:59:47 得分 0
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: 7 in the jsp file: /list.jsp
Generated servlet error:
C:\tomcat\work\Catalina\localhost\myapp\org\apache\jsp\list_jsp.java:66: ';' expected
^
1 error
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:332)
org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:412)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:472)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
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.
--------------------------------------------------------------------------------
Top
4 楼java0514(hehe)回复于 2005-04-02 15:02:42 得分 0
语法错误是我没看清,我现在改了还是不行,出现了上面的错误,高手帮忙看看
Top
5 楼sjg008(基本靠UP)回复于 2005-04-02 15:08:32 得分 0
\list_jsp.java:66: ';' expected
这个错误很明显 检查语法Top
6 楼zhutouzip(醒了的鸟)回复于 2005-04-02 15:09:05 得分 0
异常提示你的jsp文件第7行有错误,我怎么看着第7行正常啊!
呵呵!
反而是ResultSet res=db.select(strDriver,strURL)
这一行后面少一个分号!加上分号Top
7 楼java0514(hehe)回复于 2005-04-02 15:10:10 得分 0
这个错误才是我真正的错误,也是让我一直困惑的错误,错误指出说是空值,不知道怎么会是空值
不知道大家有没有碰到这样的错误啊
(上面的都是我的语法错误)
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.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
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.NullPointerException
select.select.select(select.java:55)
org.apache.jsp.list_jsp._jspService(list_jsp.java:62)
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.
Top
8 楼java0514(hehe)回复于 2005-04-02 15:11:50 得分 0
哪位好心人,留个qq号,我想直接在qq上说Top
9 楼sjg008(基本靠UP)回复于 2005-04-02 15:13:32 得分 0
select.select.select(select.java:55)提示很明显 去select.java检查第55行 有空指针
估计是conn没有初始化成功Top
10 楼daimojingdeyu(戴墨镜的鱼)回复于 2005-04-02 15:13:48 得分 10
回复人:sjg008(基本靠UP) ( 三级(初级)) 信誉:101 2005-04-02 14:56:00 得分:0
?
你jsp中这一句
ResultSet res=db.select(strDriver,strURL)
并没有把username 和 password传进去啊
那么你在javabean中
conn=DriverManager.getConnection(strURL,username,password); 又哪来的username,password?
怎么能得到连接?
同意该观点。应给将username,password穿进去。Top
11 楼zhutouzip(醒了的鸟)回复于 2005-04-02 15:14:13 得分 0
将你select()这个方法中改成这样看看:
try{
Class.forName(strDriver);
conn=DriverManager.getConnection(strURL,username,password);
}catch(Exception e) {
System.err.println(ex.getMessage());
}
//}
/** 显示数据
sql="select * from fuser";
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
return rs;
}catch(SQLException ex) {
System.err.println("数据库查询错误:" + ex.getMessage());
}
return rs;
Top
12 楼java0514(hehe)回复于 2005-04-02 15:21:36 得分 0
安着大家的意思,我把代码改了,现在又出现下列错误
我的jsp环境是可以的,而且运行其他的javabean也是可以的(例如:计数器),但运行数据库的就不行
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: select.select.select(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.list_jsp._jspService(list_jsp.java:78)
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.NoSuchMethodError: select.select.select(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jsp.list_jsp._jspService(list_jsp.java:65)
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.
--------------------------------------------------------------------------------
Top
13 楼zhutouzip(醒了的鸟)回复于 2005-04-02 15:25:21 得分 0
出现你上述的问题是,你传入select的参数个数不匹配!Top
14 楼java0514(hehe)回复于 2005-04-02 15:26:12 得分 0
那该怎样传我的参数啊Top
15 楼java0514(hehe)回复于 2005-04-02 15:27:43 得分 0
是不是那个参数有问题,strURL,我的数据库是sql的
大家看看strURL这个参数怎么写的呢!!!Top
16 楼sjg008(基本靠UP)回复于 2005-04-02 15:31:58 得分 0
你把select.java里select()方法改为
public ResultSet select(String strDriver,String strURLString username,String password) {
//}
然后在jsp页面中ResultSet res=db.select(strDriver,strURL,username, password);Top
17 楼java0514(hehe)回复于 2005-04-02 15:32:16 得分 0
这是改过后的代码:
package select;
/**
* <p>Title: JSP模式学习</p>
* <p>Description: 数据库的相关操作:如连接、查询、添加、删除、修改</p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author 胡辉
* @version 1.0
*/
import java.sql.*;
import java.io.*;
import java.util.*;
public class select {
//数据库驱动程序
private String strDriver = "";
//数据库连接字符串
private String strURL = "";
//数据库用户名
private String username = "";
//数据库密码
private String password = "";
private Connection conn = null;
private Statement stmt = null;
ResultSet rs = null;
String sql=null;
//public void odbcBean(){
//}
public ResultSet select(String strDriver,String strURL,String username,String password) {
//读到数据库配置信息
try{
Class.forName(strDriver);
}catch(java.lang.ClassNotFoundException e) {
System.err.println("数据库连接错误:" + e.getMessage());
//return false;
}
try{
conn=DriverManager.getConnection(strURL,username,password);
}catch(SQLException ex) {
System.err.println("数据库连接错误:" + ex.getMessage());
}
//}
/** 显示数据
* sql:SQL查询语句
*/
//public ResultSet query(String sql) {
sql="select * from fuser";
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
return rs;
}catch(SQLException ex) {
System.err.println("数据库查询错误:" + ex.getMessage());
}
return rs;
}
}
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="db" class="select.select" scope="page"/>
<html>
<body>
<%
String strDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strURL = "jdbc:microsoft:sqlserver://hz:1433;User=sa;Password=sa;DatabaseName=test";
String username="sa";
String password="sa";
ResultSet res=db.select(strDriver,strURL,username,password);
while(res.next())
out.println("数据为:"+res.getString(2));
%>
</body>
</html>
Top
18 楼sjg008(基本靠UP)回复于 2005-04-02 15:37:37 得分 0
/** 显示数据
* sql:SQL查询语句
*/
//public ResultSet query(String sql)
这个方法怎么回事 ???? 和 select()什么关系??? 好好检查吧 你的代码写的太乱了!!Top
19 楼java0514(hehe)回复于 2005-04-02 15:42:33 得分 0
package select;
import java.sql.*;
import java.io.*;
import java.util.*;
public class select {
private String strDriver = "";
private String strURL = "";
private String username = "";
private String password = "";
private Connection conn = null;
private Statement stmt = null;
ResultSet rs = null;
String sql=null;
public ResultSet select(String strDriver,String strURL,String username,String password) {
try{
Class.forName(strDriver);
}catch(java.lang.ClassNotFoundException e) {
System.err.println("数据库连接错误:" + e.getMessage());
}
try{
conn=DriverManager.getConnection(strURL,username,password);
}catch(SQLException ex) {
System.err.println("数据库连接错误:" + ex.getMessage());
}
sql="select * from fuser";
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
return rs;
}catch(SQLException ex) {
System.err.println("数据库查询错误:" + ex.getMessage());
}
return rs;
}
}
那个是注释掉的,跟那个没什么关系,我现在只要能显示数据出来就可以,sjg008(基本靠UP) 帮帮忙,看能不能解决掉啊Top
20 楼sjg008(基本靠UP)回复于 2005-04-02 15:43:48 得分 0
说明一下 不推荐public ResultSet select(String strDriver,String strURLString username,String password) 这种写法Top
21 楼sjg008(基本靠UP)回复于 2005-04-02 15:45:17 得分 0
现在抱什么错??Top
22 楼java0514(hehe)回复于 2005-04-02 15:46:01 得分 0
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: select.select.select(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.list_jsp._jspService(list_jsp.java:79)
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.NoSuchMethodError: select.select.select(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;
org.apache.jsp.list_jsp._jspService(list_jsp.java:66)
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.
--------------------------------------------------------------------------------
Top
23 楼java0514(hehe)回复于 2005-04-02 15:46:57 得分 0
要不大家给例子,也不一定要改我的,我的代码写的粗糙!
我想看看大家是怎么写的,以后好学着点!Top
24 楼sjg008(基本靠UP)回复于 2005-04-02 15:50:28 得分 0
你确定在jsp页面中是这样调用吗??
ResultSet res=db.select(strDriver,strURL,username, password);
如果确定 那你到你的classs文件夹下检查select.class是否是刚修改的
Top
25 楼java0514(hehe)回复于 2005-04-02 15:52:03 得分 0
是的
而且classes文件下是新的,旧的我把删除了Top
26 楼sjg008(基本靠UP)回复于 2005-04-02 15:54:32 得分 0
你到网上搜一下吧 很多 学JAVA也得学会搜索 我在朋友这里 不方便给你资料Top
27 楼java0514(hehe)回复于 2005-04-02 15:57:14 得分 0
我用过很多了(别人发布的整套代码),都会出现这个问题,总说java.lang.NullPointerException,
我的心快碎了
Top
28 楼java0514(hehe)回复于 2005-04-02 16:01:27 得分 0
现在我把(java文件)代码改了一下:
我把它分成两个函数,一个init()函数,用来连接数据库的,另一个是query(String sql),是用来查询数据表的,sql是参数
package select;
import java.sql.*;
import java.io.*;
import java.util.*;
public class select {
private String strDriver = "";
private String strURL = "";
private String username = "";
private String password = "";
private Connection conn = null;
private Statement stmt = null;
ResultSet rs = null;
String sql=null;
public boolean init(String strDriver,String strURL,String username,String password) {
try{
Class.forName(strDriver);
}catch(java.lang.ClassNotFoundException e) {
System.err.println("数据库连接错误:" + e.getMessage());
return false;
}
try{
conn=DriverManager.getConnection(strURL,username,password);
}catch(SQLException ex) {
System.err.println("数据库连接错误:" + ex.getMessage());
return false;
}
return true;
}
/** 显示数据
* sql:SQL查询语句
*/
public ResultSet query(String sql) {
try{
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
return rs;
}catch(SQLException ex) {
System.err.println("数据库查询错误:" + ex.getMessage());
}
return rs;
}
}
.jsp文件
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page language="java" %>
<%@ page import="java.sql.*" %>
<jsp:useBean id="db" class="select.select" scope="page"/>
<html>
<body>
<%
String strDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strURL = "jdbc:microsoft:sqlserver://hz:1433;User=sa;Password=sa;DatabaseName=test";
String username="sa";
String password="sa";
db.init(strDriver,strURL,username,password);
String sql="select * from fuser";
ResultSet res=db.query(sql);
while(res.next())
{
out.println("数据为:"+res.getString(2));
}
%>
</body>
</html>
但现在报错的是仍是那个java.lang.NoSuchMethodError: select.select.selectTop
29 楼sjg008(基本靠UP)回复于 2005-04-02 16:03:58 得分 0
现在心碎还有点早 如果你学下去的话还有更多让你头疼的
你留下你的email吧 到时候我给你一个小例子Top
30 楼java0514(hehe)回复于 2005-04-02 16:05:29 得分 0
好的
qq:9954485
e-mail:hh0514@sohu.comTop




