Eclipse通过jdbc连接sqlserver2008数据库的两种方式
数据库登录身份验证方式有两种
其中服务器名称即为安装SQLServer2008的电脑,充当数据库服务器,在笔者这里就是自己的电脑名称。
身份验证方式有两种:windows身份验证和SQLServer身份验证。对于选用windows身份验证,登录时不需要输入密码,登录者是这台电脑的用户;SQLServer身份验证登录需要输入用户名和密码,而sa用户是数据库服务器默认的sqlserver身份登陆者。服务器角色sysadmin是具有最大权限的角色,该角色对任何用户创建的数据库都可以浏览和修改。
- //创建windows身份验证登录的用户
- create login [DESKTOP-T2FR3H7\Administrator] from windows;
下面讨论如何在eclipse中通过jdbc连接数据库,分别采用windows身份和sqlserver身份。
1 正确导入sqljdbc.jar包到项目工程的build path目录下,此时会看到.jar下面有两个子包com.microsoft.sqlserver.jdbc包和microsoft.sql包,而SQLServerDriver驱动类就在第一个子包下面
2 采用SQLServer身份登录连接数据库服务器代码如下
- public static void method1()
- {
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //将数据库驱动器类加载到jvm中
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=aa";//数据库连接地址
- try {
- Connection conn=DriverManager.getConnection(dbURL,"sa","123456");//需要输入登录用户名和登录密码
- System.out.println("Connection Successful!");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
3 采用windows身份验证登录
需要做额外工作,且dbURL为"jdbc:sqlserver://localhost:1433;integratedSecurity=true;databasename=aa"
//integratedSecurity 身份验证方式,当为true时将使用当前的windows用户账户凭据进行身份验证;当为false时,在连接中指定用户ID和密码
代码如下
- public static void method2()
- {
- try {
- Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- String dbURL="jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=aa";
- try {
- Connection conn=DriverManager.getConnection(dbURL);
- System.out.println("Connection Successful!");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
出现这种情况报错是因为第一次使用继承身份验证方式,需要做一些额外工作。
1 将sqljdbc_auth.dll文件复制到C:/windows/system32目录下
2为保险起见, 同时也复制到jdk/bin目录下(jre/bin目录下也需要复制一份)
Sqljdbc_auth.dll文件在sqljdbc\chs\auth\x64目录下 x86代表计算机是32位,x64代表计算机是64位,应该根据自己电脑的情况灵活选择。