login.java///////// 
public class Login extends ActionSupport { 
@Override 
public String execute() throws Exception { 
// TODO Auto-generated method stub 
if (isInvalid(username) || isInvalid(password)) { 
msg = "用户名或者密码不能为空"; 
return INPUT; 

if (null == new UserDAO().checkAccount(username, password)) { 
msg = "用户名或者密码错误"; 
return INPUT; 

..............................................................................................................................
UserDAO.java 
public String checkAccount(String account, String password) { 
String sql = "SELECT ConNumber FROM Consumer WHERE ConNumber=? AND ConPass=?"; 
PreparedStatement pstat = null; 
ResultSet rs = null; 
Connection conn = new DBHelper().getConn(); 
String userid = null; 
try { 
pstat = conn.prepareStatement(sql); 
pstat.setString(1, account); 
pstat.setString(2, password); 
rs = pstat.executeQuery(); 
while (rs.next()) { 
userid = rs.getString(1); 

........................................................................................................................
public class DBHelper { 
private String driver ="com.microsoft.jdbc.sqlserver.SQLServerDriver"; 
private String url = "jdbc:microsoft:sqlserver://localhost:1433;databaseName=dbps"; 
private String user = "sa"; 
private String pwd = ""; public Connection getConn(){ 
Connection conn = null; 
try { 
Class.forName(driver); 
conn = DriverManager.getConnection(url, user, pwd); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); 

return conn; 

public static void main(String[] args) { 
System.out.println("DBHelper.main()" + new DBHelper().getConn()); 

} 页面打开错误提示:
HTTP Status 500 ..................................................................... .........................................
type Exception report 
message 
description The server encountered an internal error () that prevented it from fulfilling this request. 
exception 
java.lang.NullPointerException 
com.dao.UserDAO.checkAccount(UserDAO.java:104) 
action.Login.execute(Login.java:23) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
java.lang.reflect.Method.invoke(Unknown Source) 
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440) 
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) 
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249) 
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) eclipse 里面错误是: 
ava.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) 
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) 
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) 
at com.microsoft.jdbc.sqlserver.tds.TDSConnection. <init>(Unknown Source) 
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source) 
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source) 
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source) 
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at com.db.DBHelper.getConn(DBHelper.java:14) 
at com.dao.UserDAO.checkAccount(UserDAO.java:101) 
at action.Login.execute(Login.java:23) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
........................................................................................................... pstat = conn.prepareStatement(sql); 就是104行这里出现了错误。。我输入了用户名和密码 就出现错误了。。是怎么回事呢??
请指教

解决方案 »

  1.   

    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 这才是真正的问题所在,后面的NPE,只是因为在DBHelper里面没有连上数据库,所以connection为NULL。请确认你的Sql server数据库开了?
    请在命令行下:
    telnet localhost 1433
    端口可用?如果不行,将localhost换成127.0.0.1或者本机IP试试。
      

  2.   

    主机的连接 在端口1433:连接失败  意思就是: 数据库没启动 或者 没打sql2000 sp4补丁么  试试 谢了
      

  3.   

    这个需要ms   sql   server   的SP3   OR   SP4补丁。   到MS官方网站下载去   下载后是。EXE文件   运行后只是把安装文件解压缩需要再次安装的
      

  4.   

    是不是 我sql2000 是采取windows验证的原因需要改为混合模式不