日期:2014-05-19  浏览次数:20923 次

JDBC连接时,用户 'myEclipseUser' 登录失败问题。
将自己的检查过程也写出来了,希望大家能耐心看下,谢谢。

连接数据库失败提示信息:

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&n