我主要要实现的功能是 前一个页面xiangmu1用户输入的用户名和密码,在xiangmu2中连接数据库 看是否登录成功
我在tomcat下已经装好sqlserver的JDBC驱动 保证没有错!然后在JCreator下编写的代码如下:package com.xu;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;public class xiangmu2 extends HttpServlet{  public void doGet(HttpServletRequest req,HttpServletResponse res){
     try{  
             PrintWriter pw=res.getWriter();
                                                     //获得前面的一个页面用户输入的用户名和密码
         String u=req.getParameter("username");                   
         String p=req.getParameter("passwrd");  
          pw.println(u);                            //已经测试前面的用户名和密码都可以成功拿到
          pw.println(p); 
        
//连接数据库
//驱动
   Class.forName("com.mircosoft.sqlserver.jdbc.SQLServerDriver");
                                                                     //得到连接
Connection ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433,databaseName=LiangShanHero","xu","123");       //创建Statement
 Statement sm=ct.createStatement();
  
 ResultSet rs=sm.executeQuery("select top 1 * from my where myId='"+u+"'and myPass='"+p+"'");//这条语句是从数据库中查找是否有用户名、密码和前一个页面输的相等的数据
代码很奇怪 到啦红色那条语句就补执行啦(红色语句没有执行 用pw.println(p); 语句去测试过),大神们告诉我哪里错啦啊???

解决方案 »

  1.   

    这个全部完整的代码如下:import javax.servlet.http.*;
    import java.io.*;
    import java.sql.*;public class xiangmu2 extends HttpServlet{  public void doGet(HttpServletRequest req,HttpServletResponse res){
         try{  
                      PrintWriter pw=res.getWriter();
                        String u=req.getParameter("username");                   
             String p=req.getParameter("passwrd");  
                           //连接数据库
    //驱动
       Class.forName("com.mircosoft.sqlserver.jdbc.SQLServerDriver");
    //得到连接   Connection ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433,databaseName=LiangShanHero","xu","123");//创建Statement
       Statement sm=ct.createStatement();
      
     ResultSet rs=sm.executeQuery("select top 1 * from my where myId='"+u+"'and myPass='"+p+"'");
      
      //验证用户是否合法if(rs.next()){
                                                                                                 res.sendRedirect("xiangmu3?name="+u+"&pass="+p);
                                           //将验证成功的信息写入session
                                           //第一步 得到session 
    HttpSession hs=req.getSession(true);
                                          //修改session的存在时间
    hs.setMaxInactiveInterval(20);
                                          //第二步 把属性写入session
    hs.setAttribute("pass","ok");
        res.sendRedirect("xiangmu3");                           //从session中删除某个数据    hs.removeAttribute(String name);}else{      res.sendRedirect("xiangmu1");                                                      //bu he fa yong hu tiao dao xiangmu1 chuang kou
    }
      

  2.   

    我用的Class.forName怎么好像和lz不一样,是不是搞错掉了?
      

  3.   

    不是 我这个是sql server2005 Class.forName()里的参数是对的  我这代码在my eclipse6.5下都可以运行 成功连接数据库!!
      

  4.   

    有没有报错啊?,这写法木有错误啊,如果说没有驱动包也会报错啊java.lang.ClassNotFoundException
      

  5.   

    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    感觉还是你驱动加载有问题或者与数据库不对应。上面的这句是sql server 2000的!
    sql server 2005的要写成:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      

  6.   

     1. pw.println(u); //用System.out.println()
      pw.println(p);  //用System.out.println()
    2.
    Connection ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433,databaseName=LiangShanHero","xu","123");==>Connection ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=LiangShanHero","xu","123");
      

  7.   

    我把microsoft  写成mircosoft 啦  悲剧啊 就一个单词的事情 让我弄啦半天
      

  8.   

    还是细心的问题,实在不行就cope.