1. 请问SQLServer 2008里面的MSSQLServer引擎和SQLServer引擎可以同时启动吗??       昨天遇到一变态错误,不知道什么原因,请看如下代码:
package com.servlet;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;
public class LoginCl extends HttpServlet {
    public void doGet(HttpServletRequest req,HttpServletResponse res){
   
        Connection conn=null;
        Statement stm=null;
        ResultSet rs=null;
        try {  
             //------加载JDBC-ODBC驱动------
              //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
              //------得到连接对象------
              //String connStr="jdbc:odbc:test";
              String connStr="jdbc:sqlserver://localhost:1433;DatabaseName=test1";
              conn=DriverManager.getConnection(connStr,"sa","08062129");
             
            //接受用户名和密码
            String user=req.getParameter("username");
            String pwd=req.getParameter("passwd");
           
            //创建statement
            stm=conn.createStatement();
            rs=stm.executeQuery("select top 1 passwd from tb_users where username='"+user+"'");
           
            //说明用户是存在的
            if(rs.next()){
                String dbPasswd=rs.getString(1);
                System.out.print(dbPasswd); //得到的值是admin
                System.out.print(pwd);//得到的值是admin
                boolean b=dbPasswd.equals(pwd);
                System.out.print(b);//得到的却是false//这段代码的变态就是我必须写   " !dbPasswd.equals(pwd)  "   才会运行得到正常的结果,不知道是不是SQLServer 2008的原因??? 求解惑!
                if(dbPasswd.equals(pwd)){                    
                    //将验证成功的信息写入session,并得到session
                    HttpSession hs=req.getSession(true);
                    //修改session存在的时间
                    hs.setMaxInactiveInterval(20);
                    hs.setAttribute("pass","ok");
                    res.sendRedirect("welcome?uname="+user+"&passwd="+pwd);
                }else{
                    res.sendRedirect("login");
                }
            }
           
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }finally{
            try {
                    if(rs!=null){
                        rs.close();       
                    }
                    if(stm!=null){
                        stm.close();       
                    }
                    if(conn!=null){
                        conn.close();       
                    }
            }
            catch (Exception ex) {
                ex.printStackTrace();
            }
           
        }
    }
    public void doPost(HttpServletRequest req,HttpServletResponse res){
        this.doGet(req,res);
    }
}

解决方案 »

  1.   

     求高手指点,其他同学的没有出现这种情况,不过他们的数据库不是SQLServer 2008 ,不知道是不是数据库的原因,求指点,先谢谢了!
      

  2.   

    粗略看了下,这跟数据库应该无多大关系
    请楼主认真检查两个值,System.out.print(pwd) 时pwd有空格与无空格在控制台打印是一个效果的,我估计是那个字符含有些打印出来但看不见的,比如空格
      

  3.   


    谢谢楼上的兄弟了,搞定了。^-^trim() 返回字符串的副本,忽略前导空白和尾部空白。
    (sPasswd.trim()).equals(passwd.trim())