jspbean访问数据库不能成功

ctrlest 2004-03-15 05:32:09
bean和jsp都是我从网上下的,改了一些必要的路径什么的
可现在不能正常工作,望高手指点:
bean如下:
package test;
import java.sql.*;

public class faq {
String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1709;DatabaseName=master";
Connection conn = null;
ResultSet rs = null;

public faq()
{
try {
Class.forName(sDBDriver);
conn = DriverManager.getConnection(sConnStr,"sa","wanggang");
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("faq(): " + e.getMessage());
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery: " + ex.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
try
{
Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return rs;
}
}
jsp如下:
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>ÎÒµÄFAQ !</title>
</head>
<body>
<p><b>ÕâÊÇÎÒµÄFAQ!</b></p>
<%@ page language="java" import="java.sql.*" %>
<jsp:useBean id="workM" scope="page" class="test.faq" />
<table border=1 align=center width=80% cellpadding=0>
<%
ResultSet RS = workM.executeQuery("SELECT * FROM test");
while (RS.next()) {
%>
<tr>
<%
//out.print("<td>"+RS.getString("t")+"</td>");
//out.print("<td>"+RS.getString("t")+"</td>");
//out.print("</tr>");
}
RS.close();
%>
</table>
</body>
</html>

错误结果为:
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
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)


root cause

java.lang.NullPointerException
test.faq.executeQuery(faq.java:29)
org.apache.jsp.test.index_jsp._jspService(index_jsp.java:62)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)


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


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

Apache Tomcat/5.0.19



附加:我的服务器和数据库都已经连接正确了
...全文
13 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctrlest 2004-03-19
  • 打赏
  • 举报
回复
to qihaaaaa():
谢谢!!!!!
那个问题我已基本搞定了,此前微软的jdbc 我也已配制好了,最后,我把整个模块从eclipse下拷到tomcat的webapps下,一切就都可以运行了。 还有:我这只是个实验代码,所以就把表建到了master 下。并没有建自己的数据库。:-)

有一个新问题请教您
http://expert.csdn.net/Expert/topic/2478/2478224.xml?temp=.814953
在上面的网址中贴的贴子是oracle的,我想将它移植到sqlserver中,其中要改下面两行代码,不知如何改动,请指教:
oracle.sql.BLOB blob = ((oracle.jdbc.OracleResultSet)rs).getBLOB("pm_direc");
OutputStream outStream = blob.getBinaryOutputStream();

在sqlserver中如何写?

qjhaaaaa 2004-03-18
  • 打赏
  • 举报
回复
对了,你自己新建一个数据库,不要去连接master
qjhaaaaa 2004-03-18
  • 打赏
  • 举报
回复
package com.sanmina.common.util;
import java.sql.*;
import java.sql.Statement;
import java.io.*;
import java.text.*;
import java.util.*;
import com.sanmina.log.*;

public class Dbo {
private String sDBDriver="com.jnetdirect.jsql.JSQLDriver";
// public static String sConnStr = "jdbc:JSQLConnect://172.25.14.165:1433/database=IEMS/user=sa";
public static String sConnStr = "jdbc:JSQLConnect://172.25.14.165:1433/database=IEMS/user=sa";
private java.sql.Connection conn = null;
private Statement stmt = null;
public ResultSet rs = null;

public Dbo(){
try{
Class.forName(sDBDriver).newInstance();
conn = DriverManager.getConnection(sConnStr);
}
catch (Exception ex){
//log("Cannot load the driver,Please check if the JSQLDriver.jar in the classpath");
System.out.println("Cannot load the driver,Please check if the JSQLDriver.jar in the classpath");
Log4J.errorLog.error("Cannot load the driver,Please check if the JSQLDriver.jar in the classpath");

}
}

public void setAutoCommit(boolean bl) throws Exception {
try{
conn.setAutoCommit(bl);
}catch(Exception ex){
System.out.println("setAutoCommit() Error " + ex.getMessage());
Log4J.errorLog.error("Dbo setAutoCommit() Error " + ex.getMessage());
throw ex;
}
}

public void commit() throws Exception{
try{
conn.commit();
}catch(Exception ex){
System.out.println("commit() Error" + ex.getMessage());
Log4J.errorLog.error("Dbo commit() Error " + ex.getMessage());
throw ex;
}
}

public void rollBack() throws Exception{
try{
conn.rollback();
}catch(Exception ex){
System.out.println("rollBack() Error " + ex.getMessage());
Log4J.errorLog.error("Dbo rollBack() Error " + ex.getMessage());
throw ex;
}
}

public Statement createStatement() throws Exception{
Statement stmt = null;
try{
stmt = conn.createStatement();
}catch(Exception ex){
System.out.println("createStatement() Error " + ex.getMessage());
Log4J.errorLog.error("Dbo createStatement() Error " + ex.getMessage());
}
return stmt;
}

public void executeInsert(String sql){
try{
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
}
catch(SQLException ex){
System.err.println("dbo.executeInsert() "+ex.getMessage());
Log4J.errorLog.error("Dbo executeInsert() Error " + ex.getMessage());
}
}
public ResultSet executeQuery(String sql){
try{
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(sql);
}
catch(SQLException ex){
System.err.println("dbo.executeQuery() "+ex.getMessage());
Log4J.errorLog.error("Dbo executeQuery() Error " + ex.getMessage());
}
return rs;
}

public void executeUpdate(String sql){
try {
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
}
catch(SQLException ex) {
System.err.println("aq.executeUpdate(): " + ex.getMessage());
Log4J.errorLog.error("Dbo executeUpdate() Error " + ex.getMessage());
}
}

public void executeDelete(String sql){
try{
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
}
catch(SQLException ex){
System.err.println("dbo.executeDelete() "+ex.getMessage());
Log4J.errorLog.error("Dbo executeDelete() Error " + ex.getMessage());
}
}

public void finalize() {
closeRS();
closeStmt();
closeConn();
}

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

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

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

public Object convert(Object src){
return src==null ? "":src;
}

}

不知道你用的是什么driver,你将我这段代码copy过去,就必须用JSQLConnect.jar
如果你用我上次给你的那段代码,你必须用微软的3个driver
zhaopeizp 2004-03-18
  • 打赏
  • 举报
回复
我感觉是你的表的问题
先自己建个表试试看
我以前好象也遇到这种问题。
”DatabaseName=master“
应该是你自己的数据库

ctrlest 2004-03-17
  • 打赏
  • 举报
回复
仍不知是什么原因,可是把模块直接放在tomcat的webapps下就能行了。

请高手指点
ctrlest 2004-03-16
  • 打赏
  • 举报
回复
再问一下:

由此jsp访问的数据库的表应该怎样建,我怀疑是我的表建得不正确

谢谢指点
qjhaaaaa 2004-03-16
  • 打赏
  • 举报
回复
public static String databaseURL = "";
public static String databaseUSER = "";
public static String databasePWD = "";
public static String databaseDrvName = "";


public static Connection connectionDB() throws Exception{
Connection myconn = null;
if(databaseDrvName == ""){
databaseDrvName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
}
if(databaseURL == ""){

databaseURL = "jdbc:microsoft:sqlserver://server;DatabaseName=IEMS";
}
if(databaseUSER == ""){
databaseUSER = "";
}
if(databasePWD == ""){
databasePWD = "";
}
try{
Class.forName(databaseDrvName);
myconn = DriverManager.getConnection(databaseURL,databaseUSER,databasePWD);
}catch(SQLException sqle){
System.out.println("connectionDB() Error " + sqle.getMessage());
sqle.printStackTrace();
throw sqle;
}catch(ClassNotFoundException cnfe){
System.out.println("connectionDB() ClassNotFound Error " + cnfe.getMessage());
cnfe.printStackTrace();
throw new SQLException("connectionDB() ClassNotFound Error " + cnfe.getMessage() );
}
return myconn;
}


我这里有一个例子你看看,应该是
String sConnStr = "jdbc:microsoft:sqlserver://localhost:1709;DatabaseName=master";
将localhost:1709修改成你本机器的名称或者127.0.0.1
ctrlest 2004-03-16
  • 打赏
  • 举报
回复
上面的几位高手能不能具体地说一下错在那了?

我的端口没问题的,我设的1709,而且测试数据库连接也成功了阿

能不能在源码上指出我错在哪了?

谢谢了
ctrlest 2004-03-16
  • 打赏
  • 举报
回复
to qjhaaaaa()
你提到应该是:
将localhost:1709修改成你本机器的名称或者127.0.0.1

我试过了,还是不行。

是不是由于表没建好而造成的?

请赐教.
jiankou2001 2004-03-15
  • 打赏
  • 举报
回复
支持!UP
zhouhouqu 2004-03-15
  • 打赏
  • 举报
回复
你的端口有问题,不是1709,而是1433(sqlserver的默认端口)
我已经测试通过了,谢谢你,我原先也是空指针引用,到现在都不知道为什么:)
duan123 2004-03-15
  • 打赏
  • 举报
回复
test.faq.executeQuery(faq.java:29)
rombus 2004-03-15
  • 打赏
  • 举报
回复
jsp中使用try catch

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧