将自己的检查过程也写出来了,希望大家能耐心看下,谢谢。连接数据库失败提示信息:com.microsoft.sqlserver.jdbc.SQLServerException: 用户 'myEclipseUser' 登录失败。 ClientConnectionId:c4d48ca5-b061-4656-82f1-1dded2979990
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:243)
at utils.ConnectionDB.getConnection(ConnectionDB.java:24)
at action.ReaderController.save(ReaderController.java:28)
at action.ReaderController.main(ReaderController.java:107)
java.lang.NullPointerException
at action.ReaderController.save(ReaderController.java:33)
at action.ReaderController.main(ReaderController.java:107)
确定代码无误。之后先检查是否我的SQL服务还没有开启,不过使用 Sql Server Configuration Manager 查看 MSSQLSERVER的协议时,TCP/IP显示“已启用”的状态,并且服务确认已经开启了,另外个人推测,因为已到达用户登陆的步骤,可以排除SQL的TCP服务未开启的问题。然后,我检查 是否我的SQL的用户权限有误,于是:
我直接开SQL Server 2008的图形界面,使用“身份验证”的方式去登陆,成功使用“myEclipseUser”用户,密码“12345678“登陆。登陆进去后,
1. “服务器属性”->“安全性”:
         “服务器身份验证”->“SQL Server 和 Windows 身份验证模式。
         “登录审核”-> “失败和成功的登陆”
2. “服务器角色”:“public”
3. “状态”:设置是否允许连接到数据库引擎->授予,登录->启用。
4. “用户映射”:我所需要的“myEclipseDB”数据库中的成员身份调为“db_owner”和“public”。纠结,这问题是存在哪呢?
PS:我的代码:(我将sqljdbc4.jar放在\WebRoot\WEB-INF\lib下) // 获取数据库的连接
public static Connection getConnection() throws ClassNotFoundException{
// 定义连接数据库的URL,数据库名称,登陆数据库的用户名和密码
String url = "jdbc:sqlserver://localhost:1433;";
String dbName = "databaseName=myEclipseDB;";
String user = "user=myEclipseUser;";
String psw = "password=12345678;";
String connectionUrl = url + dbName + user + psw;
// 定义获取联接的对象
Connection conn = null;
try{
// 获取数据库驱动 JDBC 4.0 会自动加载CLASS,因此可以不手动加载
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 获得数据库连接
conn = DriverManager.getConnection(connectionUrl);
// 关闭事务的自动提交
conn.setAutoCommit(false);
return conn;
}catch(SQLException e){
System.out.println("连接数据库失败");
e.printStackTrace();
}
return null;
}附:关于代码方面,查看过官方文档(如下):
与数据库建立简单连接
使用 sqljdbc.jar 类库时,应用程序必须首先按如下所示注册驱动程序:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");加载驱动程序后,可通过使用连接 URL 和 DriverManager 类的 getConnection 方法来建立连接:String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
   "databaseName=AdventureWorks;user=MyUserName;password=*****;";
Connection con = DriverManager.getConnection(connectionUrl);
在 JDBC API 4.0 中,DriverManager.getConnection 方法得到了增强,可自动加载 JDBC Driver。因此,使用 sqljdbc4.jar 类库时,应用程序无需调用 Class.forName 方法来注册或加载驱动程序。调用 DriverManager 类的 getConnection 方法时,会从已注册的 JDBC Driver 集中找到相应的驱动程序。sqljdbc4.jar 文件包括“META-INF/services/java.sql.Driver”文件,后者包含 com.microsoft.sqlserver.jdbc.SQLServerDriver 作为已注册的驱动程序。现有的应用程序(当前通过使用 Class.forName 方法加载驱动程序)将继续工作,而无需修改。sqljdbc4.jar 类库要求使用 6.0 或更高版本的 Java 运行时环境 (JRE)。有关如何连接数据源和使用连接 URL 的详细信息,请参阅创建连接 URL 和设置连接属性。

解决方案 »

  1.   

    建议服务全开,各种tcp/ip类似的也全开,还有named什么玩意儿来着,也全开,试一下吧
    我记得我当时弄这个东西也是挺难的,弄了好几个小时,弄好了,如果不行你在找我,我也以具体帮你看一下,id是我的QQ号
      

  2.   

    SQLSERVER 用户有没有可以远程连接的权限
      

  3.   


    服务协议方面,本来我是按老师建议,只开TCP/IP的协议,
    后来,按网络的步骤,将SQLEXPRESS服务和MSSQLSERVER协议中的
    Shared Memory,Named Pipes, TCP/IP 都开了,结果还是不行。然后呢,今天终于憋不住了,将SQL软件修复过一次,还是不行~
      

  4.   


    嗯,
    我按:
    http://www.cnblogs.com/xujing/archive/2010/07/30/1788567.html
    做过
    启动SQL Server Browser service。SQL Server Browser的作用是监听来自Microsoft SQL Server资源的请求 以及提供关于安装在本机上的SQL Server实例的信息。
    启用SQL Server 2008 Express的TCP/IP端口以便接受远程连接。
    (可选)将授权模式(Server Authentication)改为SQL Server 和Windows Authentication的混合模式。SQL Server 2008 Express默认情况下只允许Windows Authentication模式登陆,即用当前登陆Windows的用户名连接数据库。如果需要使用其他账户连接,则需要手动更改授权模式。结果还是不行。 
      

  5.   


    急啊~
    下下周就要检查SSH框架做的东西了,现在连数据库也一直连不上~ 再重装了一次,还是不行~ 
      

  6.   

    卸载了SQL2008,不过卸载不干净,
    不管,照装SQL2005,装上了,不过2005装了后,只有个配置工具,纠那个结啊,其它工具全不见了,
    然后,删了05,再装,还是这个样,据说装SQL2005是要再装上另一个包的,不过在安装包上找了又找,找不着。
    于是,还是再用08的安装包装吧,不过,08的又提示装过实例,不能重名,还以为是08没有卸载完遗留下来的,试了几次直接改名行不行,不行。
    于是,再删了SQL 2005,装08,这下,总算将08重装装上了,然后,再启动数据库,呃~还是老问题,又提示连不上我自建的那个用户了,再将数据库的权限调了几回,还是不行。
    不过,忽然想到在安装过程中,给sa用户设了密码,连myEclipse的时候直接用sa超级用户再加上master数据库,问题总算是暂时解决了,先凑合用着master数据库。
      

  7.   

    终于,问题解决了,能用myEclipseUser这种自定义的用户登陆了,解决方法是
    启用 SQL server(SQLEXPRESS) 的端口,(并将里面的IP端口全部改为1433)
    禁用 SQL server(MSSQLSERVER) 的端口,(原来这里的全部1433端口也是没有用的)