日期:2014-05-20  浏览次数:20808 次

jsp连接数据库
<%
  String names=request.getParameter("textfield");//登录页面传过来的值
  String passw=request.getParameter("textfield2");//登录页面传过来的值
  Connection con;
  Statement sql;
  ResultSet rs;
  try{
   
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  }
  catch(ClassNotFoundException e){
   
  out.println("驱动程序加载错误!");
  }
  try{
   
  con=DriverManager.getConnection("jdbc:odbc:grade","sa","");
  sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
  String condition="select * from Messes ";
  rs=sql.executeQuery(condition);
  rs.next();
   
  if(names.equals(rs.getString(2)))
  { 
  if(passw.equals(rs.getString(3)))
  {
  response.sendRedirect("zhuye.jsp");
  }
  else
  {
  out.println("用户名或密码错误!"+"<a href=denglu.html>"+"返回"+"</a>");
  } 
  }
  else
  {
  out.println("请先注册:点击"+"<a href=zhuce.html>"+"注册"+"</a>"+"跳转到注册页面");
  }
   
  con.close();
  }
  catch(SQLException event)
  {
  out.println("数据库连接错误!");
  }  
  %>
为什么只能检索表Messes第一条 而不是一条一条检索呢

------解决方案--------------------
rs是结果集,rs.next(); 表示取下一条,如果有的话rs.next返回true,并且可以用rs.getxxx(i)取的字段的内容。

使用例:
java.sql.Statement stmt = conn.createStatement();
ResultSet r = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (r.next())
{
// 打印当前行的值。
int i = r.getInt("a");
String s = r.getString("b");
float f = r.getFloat("c");
System.out.println("ROW = " + i + " " + s + " " + f);
}

------解决方案--------------------
是不是别的地方出错了。。
------解决方案--------------------
哦,你仔细看一下你的代码!这里有问题:
con=DriverManager.getConnection("jdbc:odbc:grade","sa",""); 
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); 
String condition="select * from Messes "; 
rs=sql.executeQuery(condition); 
rs.next(); 
if(names.equals(rs.getString(2))) 

if(passw.equals(rs.getString(3))) 

response.sendRedirect("zhuye.jsp"); 

else 

out.println("用户名或密码错误!"+" <a href=denglu.html>"+"返回"+" </a>"); 


else 

out.println("请先注册:点击"+" <a href=zhuce.html>"+"注册"+" </a>"+"跳转到注册页面");