急急急请帮助很郁闷

QEC568320642 2012-04-03 08:03:11
我在前台写了这么个程序
<form action="LoginServlet" method="post">
<table border="1" align ="center">
<tr>
<td>用户名</td>
<td> <input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td> <input type ="password" name="userpass"></td>
</tr>
<tr>
<td> <input type ="submit" value="登录"> </td>
<td> <a href="Register.jsp"> 免费注册</a> </td>
</tr>
</table>
</form>

在后台写个这么个类在数据库里明明有三列username,userpass,和sex可为什么总是在结果集里显示只有两列呢请帮忙解答我老郁闷啦
package dljt;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Administrator
*/
@WebServlet(name = "LoginServlet", urlPatterns = {"/LoginServlet"})
public class LoginServlet extends HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String userpass = request.getParameter("userpass");
Connection conn = null;
Statement st = null;
ResultSet rs = null;
String Driver = "org.apache.derby.jdbc.ClientDriver";
String url = "jdbc:derby://localhost:1527/sample";
String user = "app";
String pass = "app";
String sql = "select username,userpass from QQ where username = '"+username+"'and userpass ='"+userpass+"'";

try {
Class.forName(Driver);
conn = DriverManager.getConnection(url, user, pass);
st = conn.createStatement();
rs = st.executeQuery(sql);
if(rs.next()) {
System.out.println(rs.getString(3))在这出的问题
out.println(rs.getString("USERNAME")+" "+rs.getString("USERPASS")+" ");
}else {
out.println("<script language = Javascript>");
out.println("window.alert(\"用户不存在请注册\")");
out.println("</script>");
request.getRequestDispatcher("Login.jsp").include(request, response);
}
} catch (SQLException ex) {
Logger.getLogger(LoginServlet.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(LoginServlet.class.getName()).log(Level.SEVERE, null, ex);
} finally {
out.close();
try {
rs.close();
st.close();
conn.close();
} catch (SQLException ex) {
Logger.getLogger(LoginServlet.class.getName()).log(Level.SEVERE, null, ex);
}

}
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

@Override
public String getServletInfo() {
return "Short description";
}
}
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
colie_li 2012-04-03
  • 打赏
  • 举报
回复
String sql = "select username,userpass from QQ where username = '"+username+"'and userpass ='"+userpass+"'";
JK_123456 2012-04-03
  • 打赏
  • 举报
回复
恩,上楼的对,你只给了2列,怎么可以获得3列呢,对吧
须弥人生 2012-04-03
  • 打赏
  • 举报
回复
代码写的不对啊,所以出错这是正常的。你查询2列,取3列所以报错啊。这个查询语句: String sql = "select username,userpass from QQ where username = '"+username+"'and userpass ='"+userpass+"'";
取出的是 username和userpass 这2个,但是你查询取出rs.getString(3) 肯定没有啊。在查询语句里面加上性别sex就行了: String sql = "select username,userpass,sex from QQ where username = '"+username+"'and userpass ='"+userpass+"'";

81,091

社区成员

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

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