救命啊!!为什么还是错

alan817 2004-10-26 06:10:25
package myConnection;

import java.lang.*;
import java.sql.*;

public class connDB {

Connection conn;
ResultSet rs;
ResultSetMetaData rsmd;
Statement stmt;
//String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
//String jdbcURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Test";
String driverName="sun.jdbc.odbc.JdbcOdbcDriver";
String jdbcURL="jdbc:odbc:Test";
String username="Alan";
String password="";


public connDB(){
conn=null;
rs=null;
rsmd=null;
stmt=null;
try{
Class.forName(driverName);
}
catch(ClassNotFoundException e){
}
}

public ResultSet execQuery(String sql){
if(sql==null){
System.out.println("查询语句不能为空。");
}
try{
conn=DriverManager.getConnection(jdbcURL,username,password);
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException eq){
}
return rs;
}

public int execUpdate(String sql){
int result=0;
try{
stmt=conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException eu){
}
return result;
}

public void rsClose() throws Exception{
if(rs!=null){
rs.close();
rs=null;
}
}
public void stmtClose() throws Exception{
if(stmt!=null){
stmt.close();
stmt=null;
}
}
public void connClose() throws Exception{
if(conn!=null || !conn.isClosed()){
conn.close();
conn=null;
}
}
public void closeAll() throws Exception{
rsClose();
stmtClose();
connClose();
}


}


jsp也面:
<jsp:useBean id="connDB" class="myConnection.connDB" scope="page"/>
//String sql1="update userInfo set addr='hhh' where id=1";
String sql2="select * from userInfo";
ResultSet rs=connDB.execQuery(sql2);

这样写的没提示什么错误,但是加上rs.next();就出现错误。

极度郁闷~~
请各位大侠帮帮忙呀


错误信息:
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
org.apache.jsp.testSql_jsp._jspService(testSql_jsp.java:77)
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.



...全文
179 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan817 2004-10-27
  • 打赏
  • 举报
回复
结果:
记录集为空

但是我这样写又是可以:

import java.lang.*;
import java.sql.*;
import myConnection.connDB;

public class myTest{

public static void main(String[] args){

/*这部分捕捉异常:java.lang.NullPointerException
try{
connDB conn22=new connDB();
String sql22="update userInfo set addr='桂林' where id=1";
conn22.execUpdate(sql22);
}catch(Exception ex){
System.out.println(ex);
}*/


//查询部分正常
try{

connDB conn=new connDB();
String sql="select * from userInfo";
ResultSet rs=conn.execQuery(sql);
while (rs.next()) {
System.out.println(rs.getString("userName")+" "+rs.getString("addr"));
}
}
catch(Exception e){
System.out.println(e);
}

}

}
jinannanhai79 2004-10-27
  • 打赏
  • 举报
回复
你加上代码测试一下
if(rs == null)
System.out.println("数据结果集为空");
else
{
System.out.println("数据结果集为非空");
rs.next();
System.out.println(rs.getString(0));
}
zhangjensy 2004-10-27
  • 打赏
  • 举报
回复
哪裹有SQL SERVER的驅動下載?我想連接,但報驅動打不開.
alan817 2004-10-27
  • 打赏
  • 举报
回复
也是不可以哦
rs.next是语法出错
baointoo1980 2004-10-27
  • 打赏
  • 举报
回复
rs.next这样写试试:
if (rs.next())
{
......
}

可能是没记录
alan817 2004-10-27
  • 打赏
  • 举报
回复
这里是正常的 :

import java.lang.*;
import java.sql.*;

public class myTest{


public static void main(String[] args){
try{
String driverName="sun.jdbc.odbc.JdbcOdbcDriver";
String jdbcURL="jdbc:odbc:Test";
String username="Alan";
String password="";

Class.forName(driverName);
try{
Connection conn=DriverManager.getConnection(jdbcURL,username,password);
Statement stmt=conn.createStatement();
//stmt=conn.createStatement();
//stmt.executeUpdate("update userInfo set addr='柳州' where id=1");
ResultSet rs=stmt.executeQuery("select * from userInfo");
while (rs.next()){
System.out.println(rs.getString("id")+" "+rs.getString("userName")+" "+rs.getString("sex")+" "+rs.getString("addr"));
}
}
catch(SQLException ex){
System.out.println(ex);
}

}
catch(ClassNotFoundException e){
System.out.println(e);
}
}

}
jinsfree 2004-10-27
  • 打赏
  • 举报
回复
应该是rs为空才出现从的吧
alan817 2004-10-27
  • 打赏
  • 举报
回复
但是我在Application里面查询、更改都可以,数据源和查询的语句都是一样的

弄不懂是什么原因一起的
jinannanhai79 2004-10-27
  • 打赏
  • 举报
回复
你不<jsp:useBean id="connDB" class="myConnection.connDB" scope="page"/>
这个样子写,将需要的包都包含到jsp页面中,然后
<%
connDB conn=new connDB();
String sql="select * from userInfo";
ResultSet rs=conn.execQuery(sql);
if(rs == null)
System.out.println("数据结果集为空");
else
{
System.out.println("数据结果集为非空");
rs.next();
System.out.println(rs.getString(0));
}
%>
这个样子写一下,测试,看看能不能通过,有没有异常
beikechen 2004-10-27
  • 打赏
  • 举报
回复
帮你顶
ssuupvbamd 2004-10-27
  • 打赏
  • 举报
回复
楼主我跟你有同样的错误(只要涉及到取数据库的数据就会出错,好像是不能连到数据库,可是,我测试连接都是好好,一点异常都没有,),我也搞了一个星期不知道是什么原因.我也很想得到答案.
snow_jin 2004-10-27
  • 打赏
  • 举报
回复
up
alan817 2004-10-27
  • 打赏
  • 举报
回复
那也捕捉异常

我现在郁闷的就是在JSP页面执行不下
但是在application里面可以正常运行结果
yown 2004-10-27
  • 打赏
  • 举报
回复
public ResultSet execQuery(String sql){
if(sql==null){
System.out.println("查询语句不能为空。"); //IF语句如果成立,那还是往下执行了呀
}
try{
conn=DriverManager.getConnection(jdbcURL,username,password);
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException eq){
}
return rs;
}

---这个是不是有点问题呢?

alan817 2004-10-27
  • 打赏
  • 举报
回复
更新记录也可以了
更新之前少了查询

在控制台都正常
就是在jsp页面不行,返回空的记录集
tutor666 2004-10-27
  • 打赏
  • 举报
回复
在bean里把异常信息写到控制台
System.out.println(eq);
tutor666 2004-10-26
  • 打赏
  • 举报
回复
在查询时有异常因此rs为空,建的数据源可能有问题,或者你的查询语句。

81,092

社区成员

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

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