求助高手,对数据库操作出现问题,恳请帮忙!

woaxx 2006-05-03 06:09:20
我做毕业设计是用jsp+struts,我在做登陆验证的时候在LogonAction里查询数据库的时候出现问题,搞不明白。
HTTP Status 500 -

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

type Exception report

message

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

exception

javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.NullPointerException
com.smsystem.LogonAction.execute(LogonAction.java:41)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
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.30 logs.





我在LogonAction里查询数据库的语句为:


public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
LogonForm logonForm = (LogonForm) form;
String username = logonForm.getUsername();
String password = logonForm.getPassword();
String flag=logonForm.getFlag();
sql_data db = new sql_data();
try{
ResultSet rs = db.executeQuery("select * from admin where AdminName='"+username+"' and AdminPwd='"+password+"'");


if(rs.next()){
HttpSession session = request.getSession();
session.setAttribute("username", username);
}else{

logonForm.reset(mapping,request);
return (mapping.findForward("failure"));
}
}catch(SQLException ex){
System.out.print("Logon Error£º" + ex.getMessage());
}finally{
db.closeConn();
}



return (mapping.findForward("success"));
}

有哪位帮我看看我到底什么地方做错了,我搞了很长时间都没搞好。恳请各位老大帮忙,在线等~~~~~
...全文
153 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
PopKaven 2006-05-04
  • 打赏
  • 举报
回复
不知与数据库建立连接是否成功,如果没成功的话conn的值就是null,那么在你执行stmt = conn.createStatement();的时候就会产生NullPointException而你又没有对
NullPointException进行处理,所以该异常就会在41行产生。我说的这些是在与数据库建立连接不成功的情况下出现。不知道你的是否这样。
sunday_boy2006 2006-05-04
  • 打赏
  • 举报
回复
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
LogonForm logonForm = (LogonForm) form;
..............
中的form没有初始化,试null!!!!!


不知道说的对不对!!!!!
interpb 2006-05-03
  • 打赏
  • 举报
回复
System.out.println(password);
System.out.println(username);

你加入这两句试试

看究竟有没有得到值

然后才能判断
woaxx 2006-05-03
  • 打赏
  • 举报
回复
登陆的jsp中我就做了两个表单,一个username,一个password,action="logon.do"
interpb 2006-05-03
  • 打赏
  • 举报
回复
你的登陆的jsp和ActionForm类贴出来看看吧
woaxx 2006-05-03
  • 打赏
  • 举报
回复
谢谢,那我应该怎么做?我是新手,不懂的东西太多了。
interpb 2006-05-03
  • 打赏
  • 举报
回复
这个数据库操作的类没有问题

也没有报异常

应该是你的loginform里面没有相对应的属性值,所以拼sql的时候抛了异常
woaxx 2006-05-03
  • 打赏
  • 举报
回复
下面是sql_data的代码:



package com.smsystem;

import java.sql.*;

public class sql_data {
String sDBDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url =
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";
//pubsΪÄãµÄÊý¾Ý¿âµÄ
String user = "sa";
String password = "";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
public sql_data() {
try {
Class.forName(sDBDriver);
} catch (java.lang.ClassNotFoundException e) {
System.err.println("sql_data(): " + e.getMessage());
}
}
public void executeInsert(String sql) {
try {
//conn = DriverManager.getConnection(url,user,password);
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
} catch (SQLException ex) {
System.err.println("sql_data.executeUpdate:" + ex.getMessage());
}
}
public ResultSet executeCount(String sql) {
try {
//conn = DriverManager.getConnection(url,user,password);
conn = DriverManager.getConnection(url, user, password);
stmt =
conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println("sql_data.executeUpdate:" + ex.getMessage());
}
return rs;
}
public ResultSet executeQuery(String sql) {
try {
conn = DriverManager.getConnection(url, user, password);
stmt =
conn.createStatement(
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch (SQLException ex) {
System.err.println("sql_data.executeQuery:" + ex.getMessage());
}
return rs;
}
public void executeUpdate(String sql) {
try {
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
} catch (SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
}
public void executeDelete(String sql) {
try {
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();
} catch (SQLException ex) {
System.err.println("sql_data.executeDelete:" + ex.getMessage());
}
}
public void closeStmt() {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

public void closeConn() {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
interpb 2006-05-03
  • 打赏
  • 举报
回复
username

password

可能有null

把这两行加在41行前面然后试试看
System.out.println(password);
System.out.println(username);

sheep219 2006-05-03
  • 打赏
  • 举报
回复
最好把sql_data这个类也贴出来了。
sheep219 2006-05-03
  • 打赏
  • 举报
回复
sql_data db = new sql_data();
try{
ResultSet rs = db.executeQuery("select * from admin where AdminName='"+username+"' and AdminPwd='"+password+"'");

你这里的db返回的是什么啊
woaxx 2006-05-03
  • 打赏
  • 举报
回复
41行是:

ResultSet rs = db.executeQuery("select * from admin where AdminName='"+username+"' and AdminPwd='"+password+"'");
interpb 2006-05-03
  • 打赏
  • 举报
回复
LogonAction.java:41


41行有空指针异常 你的41行具体是哪一句

81,122

社区成员

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

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