注册 登录
编程论坛 J2EE论坛

用javabean连接sql 2000连接不上(已解决,配置有问题)

pchelp2008 发布于 2006-09-13 12:43, 2283 次点击

现在又出现了这样的错误:这是找不到什么来着:是不是配置有问题呢:
--------------------------------------------------------------------------------

type Exception report

message

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

exception

org.apache.jasper.JasperException: /11.jsp(3,5) Invalid standard action
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

org.apache.jasper.JasperException: /11.jsp(3,5) Invalid standard action
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:86)
org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1258)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1572)
org.apache.jasper.compiler.Parser.parse(Parser.java:126)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


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


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

这是firm.java文件
package firm;

import java.sql.*;
import java.io.*;
import java.util.*;

public class firm
{
public Connection conn = null;
public Statement stmt = null;
public ResultSet rs = null;
// private static String propFileName = "C:/connDB.properties";
// private static Properties prop = new Properties();
private static String dbClassName ="com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static String dbUrl ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=GuestBook";
private static String dbUser = "sa";
private static String dbPwd = "";

public static Connection getConnection()
{
Connection conn = null;
try
{
Class.forName(dbClassName).newInstance();
conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
}
catch (Exception ee)
{
ee.printStackTrace();
}
if (conn == null)
{
System.err.println(
);
}
return conn;
}

/*
*功能:执行查询语句
*/
public ResultSet executeQuery(String sql)
{
try
{
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch (SQLException ex)
{
System.err.println(ex.getMessage());
}
return rs;
}

/*
*功能:执行更新操作
*/
public int executeUpdate(String sql)
{
try
{
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql);
}
catch (SQLException ex)
{

}
try
{
stmt.close();
}
catch (SQLException ex1)
{
}
}
/*
*功能:关闭数据库的连接
*/
public void close()
{
try
{
if (rs != null)
{
rs.close();
}
}
catch (Exception e)
{
e.printStackTrace(System.err);
}
try
{
if (stmt != null)
{
stmt.close();
}
}
catch (Exception e)
{
e.printStackTrace(System.err);
}
try
{
if (conn != null)
{
conn.close();
}
}
catch (Exception e)
{
e.printStackTrace(System.err);
}
}

}


这是index.jsp文件:

<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*,java.text.*,java.util.*,HYBTX.sys.data.*,HYBTX.info.*"%>
<jsp:userBean id="conn" scope="page" class="firm.firm"/>
<%
String sql="select * from Guest_Book";
ResultSet rs=conn.executeQuery(sql);
out.print(rs);
%>

[此贴子已经被作者于2006-9-18 13:17:29编辑过]

28 回复
#2
roy_guo2006-09-13 13:15
报的错贴出来
安装jdbc驱动和SQLServer补丁了么?
#3
pchelp20082006-09-13 13:15
大家光看不回答呢!!是不是太简单了啊!
#4
pchelp20082006-09-13 13:16
装了啊!!!!!!!什么都没报,就是一个null
只有本站会员才能查看附件,请 登录

[此贴子已经被作者于2006-9-13 13:19:52编辑过]

#5
球球2006-09-13 14:04
晕晕晕,把数据库部分搞得也太详细了...

[此贴子已经被作者于2006-9-13 14:05:01编辑过]

#6
球球2006-09-13 14:08
你尝试下在jsp中调用ResultSet executeQuery(String sql)这个方法.


//while(rs.next()){
//String ID=rs.getString("ID");
//out.print(ID);
//}
把String ID定义在外面,试试.

[此贴子已经被作者于2006-9-13 14:34:33编辑过]

#7
pchelp20082006-09-14 08:02

还是没效果啊.它压根儿就没连上啊!我的配置应该没问题

[此贴子已经被作者于2006-9-14 8:19:50编辑过]

#8
无理取闹2006-09-14 10:16
ResultSet rs=conn.executeQuery(sql);这句
应该是ResultSet rs=st.executeQuery(sql);
#9
pchelp20082006-09-14 11:25


我用了:ResultSet rs=conn.executeQuery(sql);这句
应该是ResultSet rs=st.executeQuery(sql);
出现了这个:,没定义呢:
An error occurred at line: 4 in the jsp file: /index.jsp
Generated servlet error:
st cannot be resolved


org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

#10
pchelp20082006-09-14 12:58

烦死了:改成这样也不行:
package firm;
import java.sql.*;
public class firm {
String sDbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=GuestBook";
String user = "sa";
String pass = "";
private Connection conn=null;
private Statement stmt=null;
ResultSet rs=null;

public firm(){
try {
Class.forName(sDbDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("firm():"+e.getMessage());
}
}
////////////////////////////////////
public ResultSet executeQuery(String sql){
//rs=null;
try
{
conn=DriverManager.getConnection(sConnStr,user,pass);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery(sql);
//System.out.println("连接数据库成功");
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery:"+ex.getMessage());
//System.out.println("发生异常");
//return null;
}
return rs;
}

//////////////////////////////
public int executeUpdate(String sql)
{
//stmt=null;
//rs=null;
int result = 0;
try{

conn=DriverManager.getConnection(sConnStr,user,pass);
stmt=conn.createStatement();
result=stmt.executeUpdate(sql);
//stmt.close();
//conn.close();


}
catch(SQLException ex)
{
result = 0;
//System.err.println("aq.executeQuery:"+ex.getMessage());
}

try {
stmt.close();
}
catch(SQLException ex1)
{
}
return result;
}
////////////////////////////////////////
public void close(){
try{
if (rs != null){
rs.close();
}
}
catch(Exception e){
// e.printStackTrace(system.err);
}
try
{
if (stmt != null)
{
stmt.close();
}
}
catch (Exception e)
{
// e.printStackTrace(system.err);
}
try
{
if (conn != null)
{

conn.close();
}

}
catch (Exception e)
{
// e.printStackTrace(system.err);
}
}
}







[此贴子已经被作者于2006-9-18 12:53:11编辑过]

#11
z1089799792006-09-14 13:44

就是把你第一次的local改为localhost或127.0.0.1就可以了

#12
z1089799792006-09-14 13:54
你这个好象也用不到改server.xml
#13
无理取闹2006-09-14 16:35
我看错了
但是没看懂你的类的作用
你的数据库里有没有数据啊
怎么建的表 能看看么?
#14
pchelp20082006-09-14 17:40

数据库表在最上面:只有两行:
数据库里有数据,只有两行:测试的:现在我又改了,还是不行:
出错如下:

type Exception report

message

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

exception

org.apache.jasper.JasperException: Exception in JSP: /index.jsp:6

3: <jsp:useBean id="conn" scope="page" class="firm.firm"/>
4: <%//st=conn.createStatement();
5: String sql="select * from Guest_Book";
6: ResultSet rs=conn.executeQuery(sql);
7: //ResultSet executeQuery(String sql);
8: //String ID=rs.getString("ID");
9: //while(rs.next()){


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.NullPointerException
firm.firm.executeQuery(firm.java:68)
org.apache.jsp.index_jsp._jspService(index_jsp.java:60)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


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


[此贴子已经被作者于2006-9-18 12:53:41编辑过]

#15
无理取闹2006-09-14 18:44

你在类里添加个main方法来单独测试一下
先不要放入jsp中

#16
z1089799792006-09-14 22:07
public int executeUpdate_id(String sql)
{
int result = 0;
try
{
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql);
String ID = "select @@IDENTITY as id";
rs = stmt.executeQuery(ID);
if (rs.next())
{
int autoID = rs.getInt("id");
result = autoID;
}
}
catch (SQLException ex)
{
result = 0;
}
return result;
}

红色的地方可以这样写吗
#17
pchelp20082006-09-15 08:04
可以这样写,如果失败,它会返回一个小于0的数:
#18
z1089799792006-09-15 08:57
是吗 我一会试试
不过你最新改的我觉得太复杂了
又不是连接池没有必要这么写吧
#19
z1089799792006-09-15 09:12
编译不了
int result = 0;
result = stmt.executeUpdate(sql);

#20
z1089799792006-09-15 09:22
为什么在你的代码里能便宜
我的就不行呢
int result = 0;
result = stmt.executeUpdate(sql);
#21
z1089799792006-09-15 09:25
明白了
没看清楚
#22
pchelp20082006-09-15 12:14
我还没明白,怎么连不上,连了两天还不行,郁闷!

[此贴子已经被作者于2006-9-15 12:14:59编辑过]


#23
无理取闹2006-09-15 15:41
我说的方法你试了么?用main测试一下
#24
球球2006-09-15 22:25
以下是引用pchelp2008在2006-9-14 11:25:13的发言:


我用了:ResultSet rs=conn.executeQuery(sql);这句
应该是ResultSet rs=st.executeQuery(sql);
出现了这个:,没定义呢:

你定义的是stmt,用st当然没定义了.

#25
球球2006-09-15 23:47

//firm.java
package firm;

import java.sql.*;
import java.io.*;
import java.util.*;

public class firm
{
public Connection conn = null;
public Statement stmt = null;
public ResultSet rs = null;
// private static String propFileName = "C:/connDB.properties";
// private static Properties prop = new Properties();
private static String dbClassName ="sun.jdbc.odbc.JdbcOdbcDriver";
private static String dbUrl ="jdbc:odbc:driver=sql server;server=(local);database=GuestBook";
private static String dbUser = "sa";
private static String dbPwd = "";

public static Connection getConnection()
{
Connection conn = null;
try
{
Class.forName(dbClassName).newInstance();
conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
}
catch (Exception ee)
{
ee.printStackTrace();
}
if (conn == null)
{
System.err.println(
"警告: DbConnectionManager.getConnection() 获得数据库链接失败.\r\n\r\n链接类型:" +
dbClassName + "\r\n链接位置:" + dbUrl + "\r\n用户/密码" + dbUser + "/" +
dbPwd);
}
return conn;
}

/*
*功能:执行查询语句
*/
public ResultSet executeQuery(String sql)
{
try
{
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch (SQLException ex)
{
System.err.println(ex.getMessage());
}
return rs;
}

/*
*功能:执行更新操作
*/
public int executeUpdate(String sql)
{
int result = 0;
try
{
conn = getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
result = stmt.executeUpdate(sql);
}
catch (SQLException ex)
{
result = 0;
}
try
{
stmt.close();
}
catch (SQLException ex1)
{
}
return result;
}
/*
*功能:关闭数据库的连接
*/
public void close()
{
try
{
if (rs != null)
{
rs.close();
}
}
catch (Exception e)
{
e.printStackTrace(System.err);
}
try
{
if (stmt != null)
{
stmt.close();
}
}
catch (Exception e)
{
e.printStackTrace(System.err);
}
try
{
if (conn != null)
{
conn.close();
}
}
catch (Exception e)
{
e.printStackTrace(System.err);
}
}

}

////////////////////////////////////////////////////
//index.jsp
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="java.sql.*"%>
<jsp:useBean id="firm" scope="page" class="firm.firm" />
<%
String sql="select * from GuestBook";
ResultSet rs=firm.executeQuery(sql);

String name=null;
if(rs.next()){
name=rs.getString("uname");
}
%>
<html>
<head>
</head>
<body>
<%= name%>
</body>
</html>
//表:
create database GuestBook

create table GuestBook
(
uname varchar(10),
age int
)

insert into GuestBook values('aa',2)

结果为:aa
把驱动和连接改了:
private static String dbClassName ="sun.jdbc.odbc.JdbcOdbcDriver";
private static String dbUrl ="jdbc:odbc:driver=sql server;server=(local);database=GuestBook";
然后你的
<jsp:userBean ...... />
写错了,应该是<jsp:useBean id="firm" scope="page" class="firm.firm" />

#26
pchelp20082006-09-16 08:16

韩峰的main方法,我不知道怎么测,所以...........
我用了25楼的,出现这样的!它说50行有错误;
description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception in JSP: /11.jsp:6

3: <jsp:useBean id="firm" scope="page" class="firm.firm" />
4: <%
5: String sql="select * from Guest_Book";
6: ResultSet rs=firm.executeQuery(sql);
7: out.print(rs);
8: %>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.NullPointerException
firm.firm.executeQuery(firm.java:50)

org.apache.jsp._11_jsp._jspService(_11_jsp.java:61)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

[此贴子已经被作者于2006-9-18 12:54:42编辑过]

#27
球球2006-09-17 10:55
我再运行了一遍很正常.
那就把它除掉.....
还有jsp中导入的包java.text.*,java.util.*,HYBTX.sys.data.*,HYBTX.info.*
我不知道这些是干什么用的???
HYBTX.sys.data.*,HYBTX.info.*这又是什么意思?
不相干的包就不要导入了.
#28
pchelp20082006-09-18 08:25

现在好像好了点,但还是有这么一个错误!难道配置有问题!

An error occurred at line: 3 in the jsp file: /11.jsp
Generated servlet error:
ResultSet cannot be resolved to a type


org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause


[此贴子已经被作者于2006-9-18 8:26:13编辑过]

#29
tblovecj2006-09-20 00:40
连接数据库的区别
兄弟,我先问一下你的操作系统是什么,你写的微软的驱动连接,在XP系统上连不起,如果你是用的XP,我建意你有桥连接方式,应该能行的,就是"sun.jdbc.odbc.JdbcOdbcDriver","jdbc:odbc:(此处填写你的数据源名)"
1