关于JavaWeb的数据库的问题?

无间虚者 2012-04-09 06:02:22
import java.io.*;
import java.sql.SQLException;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class StudentServlet extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
this.doPost(req,res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException,IOException{
res.setCharacterEncoding("GBK"); //设置res编码为GBK
req.setCharacterEncoding("GBK"); //设置req编码为GBK
HttpSession session = req.getSession(); //得到session对象
String action = req.getParameter("action"); //得到action动作
String message = ""; //声明消息字符串
String stuNO = (String)session.getAttribute("stuNO");//得到当前登陆的学生信息
StuDB sdb=new StuDB();
//DBUtil dbu = (DBUtil)wac.getBean("DBUtil"); //得到DBUtil对象
if(action.equals("login")){
stuNO = req.getParameter("uname").trim(); //得到登陆用户名
String pwd = req.getParameter("pwd").trim(); //得到登陆密码
try {
41行在这里 if((sdb.verify(stuNO,pwd))){ //登陆成功
List<Student> all = sdb.getStuInfo(stuNO);//执行查询得到该学生信息
Iterator<Student> iter = all.iterator();
//遍历输出所有用户信息
while(iter.hasNext()) {
Student s = iter.next();
System.out.println(s.getStudentNO());
System.out.println(s.getPassword());
System.out.println("您的名字"+s.getName());
System.out.println(s.getAge());
System.out.println(s.getGender());
System.out.println(s.getClasss());
System.out.println(s.getDepartment());
System.out.println("你的借书权限"+s.getPermitted());
session.setAttribute("stuNO",s.getStudentNO()); //将学号放进session
session.setAttribute("stuName",s.getName()); //将学生姓名放进session
}
}
else{
message = "非法的用户名和密码,请核对后重新登陆。"; //登陆失败消息
req.setAttribute("message", message); //设置消息
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
req.getRequestDispatcher("login.jsp").forward(req,res); //转发置login页面
}
}




import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import java.io.*;
import org.springframework.jdbc.core.*;

public class StuDB {
private String sql = null; //声明SQL字符串引用
DataBaseConnection dbc = null ;
PreparedStatement pstmt = null ;
Student stu=null;
public boolean verify(String StuNO,String pwd) throws SQLException{ //登陆验证
boolean result = false; //登陆成功失败标志
String sql = "SELECT * FROM student WHERE StudentNO='?',Password='?'" ;
dbc = new DataBaseConnection() ;
pstmt = dbc.getConnection().prepareStatement(sql) ;
27行在这里 pstmt.setString(1,StuNO);
pstmt.setString(2,pwd);
ResultSet rs = pstmt.executeQuery() ;
if(rs.next()){ //判断查询结果
result = true;//如果存在用户则值标志位为true
}
rs.close() ;
pstmt.close() ;
dbc.close() ;
return result;//返回标志位
}
public List<Student> getStuInfo(String StuNO) throws SQLException{ //声明SQL字符串引用
List<Student> all = new ArrayList<Student>() ;
sql = "SELECT * FROM student WHERE StudentNO='?'" ;
dbc = new DataBaseConnection() ;
pstmt = dbc.getConnection().prepareStatement(sql) ;
pstmt.setString(1,StuNO);
ResultSet rs = pstmt.executeQuery() ;
if(rs.next()){
stu = new Student() ;
stu.setStudentNO(rs.getString(1));
stu.setPassword(rs.getString(2));
stu.setName(rs.getString(3));
stu.setAge(rs.getInt(4));
stu.setGender(rs.getString(5));
stu.setClasss(rs.getString(6));
stu.setDepartment(rs.getString(7));
stu.setPermitted(rs.getInt(8));
all.add(stu) ;
}
rs.close() ;
pstmt.close() ;
dbc.close() ;
return all;
}




java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:2796)
at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:3627)
at wyf.wyy.StuDB.verify(StuDB.java:27)在上标记处:
at wyf.wyy.StudentServlet.doPost(StudentServlet.java:41)在上标记处:
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxw3152 2012-04-10
  • 打赏
  • 举报
回复
烈火烧车
昨日凡阳 2012-04-09
  • 打赏
  • 举报
回复
你的sql改成什么了?
吉祥0o-o0 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
是有楼上所说的问题,但,解决完这个问题后还有一个问题:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Password='20100710'' at line 1
这是什么……
[/Quote]

和数据库中的类型不匹配吧?
X497347200 2012-04-09
  • 打赏
  • 举报
回复
pstmt.setString(2,pwd);

你这设置Password, 你数据库里面是什么类型的
无间虚者 2012-04-09
  • 打赏
  • 举报
回复
是有楼上所说的问题,但,解决完这个问题后还有一个问题:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Password='20100710'' at line 1
这是什么意思?谢谢
古市轩 2012-04-09
  • 打赏
  • 举报
回复
String sql = "select * from student where StudentNO=? and Password=?" ;
楼上正解
X497347200 2012-04-09
  • 打赏
  • 举报
回复
String sql = "SELECT * FROM student WHERE StudentNO='?',Password='?'" ;

这一句不要单引号,用and

String sql = "SELECT * FROM student WHERE StudentNO=? and Password=?" ;

81,094

社区成员

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

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