我试图将我的Java代码连接到Microsoft SQL Server 2008 R2 Express数据库。我已经下载了Microsoft SQL Server JDBC Driver 3.0,并将sqljdbc4.jar添加到我的类路径中。我正在使用Netbeans,并且在我的项目中也包含了sqljdbc4.jar。将SQL Server 2008连接到Java:登录失败,出现用户错误
我在SQL Server Management Studio中创建了一个名为TestDB1的数据库,并添加了一些用于测试的列和值。我通过右键单击服务器JACOB = PC \ SQLEXPRESS-> Properties-> Secuity并从Windows身份验证模式更改为SQL Server和Windows身份验证模式,从Windows身份验证模式更改。
然后,我通过右键单击JACOB-PC/SQLEXPRESS-> Secuity Folder-> Logins文件夹下的窗口资源管理器中的登录文件夹创建了一个新登录名,并添加了新的登录名。我给它命名为jhaip2,切换到SQL Server身份验证并将密码设置为jacob。强制执行密码策略并强制密码过期未被选中。默认数据库设置为TestDB1。然后在TestDB1-> Secuity-> Users-> jhaip2-> Database角色成员资格下,我将jhaip2设置为db_owner(我无法在管理工作室中登录数据库而没有这样做,可能不是正确的做法?)。然后我重新启动了服务器。
现在对于我的java代码,它基本上是JDBC Driver 3.0示例代码的直接副本,除非没有Windows身份验证。
package databasetest1;
import java.sql.*;
public class connectURL {
public static void main(String[] args) {
// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://localhost:1433;" + "databaseName=TestDB1;";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("Driver okay");
con = DriverManager.getConnection(connectionUrl,"jhaip2","jacob");
System.out.println("Connection Made");
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
}
}
当我运行时,它打印出“Driver okay”,所以我假设我的驱动程序设置正确。然后它打印错误:
com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'jhaip2'.
无论我使用什么用户名,它总是失败。我有一种感觉,我设置了错误的用户。如果任何人都可以给我一些关于如何正确设置用户的帮助,或者有关如何简单连接到Java中的SQL Server数据库的任何指导,我将不胜感激。
你正确添加用户到数据库引擎的具体数据库 – mKorbel
你有没有试着用SQL Server管理控制台内的用户名和密码登录?也许你的sqlserver被配置为使用windows验证而不是sql server验证。 – Omnaest
@ user625146我忘记了这一点,同意更改Windows对混合模式的支持,+1和SQL2008R2通过默认关闭了网络管道...... – mKorbel