JDBC连接SQL Server数据库[windows验证模式连接+SQL server验证]

都说用JDBC连接数据库会出现很多问题,现总结、汇总一下。

前提是已经正确安装了SQL Server系列数据库并可正常使用(不同版本连接略有区别)。
1、首先,要正确导入sqljdbc.jar到工程[右键工程,点击属性,在弹出的菜单中选择Build Path,添加外部JDR:Add External JARs,找到 sqljdbc4.jar 文件并打开,然后单击 OK 完成构建路径的配置]
2、把sqljdbc\chs\auth\x64下的sqljdbc_auth.dll文件拷贝到:C:\Windows\System32。[32位的x64同理]
3、import java.sql.*;需要导入的包

SQL Server数据库配置事项:
1、因为SQL Server 安装好后,默认协议是没有开启的,所以要打开SQL Server配置管理器中开启:
步骤:运行 开始 → 所有程序 → Microsoft SQL Server 2012 → 配置工具 →SQL Server配置管理器,
2、要允许  除本机以外,其他设备连接到数据库,SQL Server默认是只允许本机连接的。
    SQL Server2005,2008 是要在配置工具中,外围应用配置器中,配置服务。
    SQL Server2012,是要配置ERIC2012的协议。
3、若采用SQL Server身份验证方式--连接SQL Server,需要设置登录帐号和密码;
步骤:a.SQL Server Management Studio 的对象资源管理器中,右键单击服务器,再单击“属性”
      b.在“安全性”页上,选择SQL Server身份验证,
      c.展开连接的服务器,展开“安全性”,展开“登录名”,设置sa的密码为abc。
        !!记住,设置完后要重新连接。
4、在数据库中,创建一个,database,至少含有一张表用作测试。此处以数据库studentdb,学生表student为例

编写程序,连接和操作数据库
方式一:windows验证模式连接SQL Server
package com.ljheee.sqlserver;
import java.sql.*;
public class SqlServer {
    public static void main(String[] args) {
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null; 
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";      
        //数据库URL[即:是要连接那一个数据库]localhost--指定本机;integratedSecurity=true--指定windows验证模式连接数据库studentdb
        String dbURL = "jdbc:sqlserver://localhost:1433;integratedSecurity=true; DatabaseName=studentdb";    
        try {
            Class.forName(driver);//加载驱动
            con = DriverManager.getConnection(dbURL);//建立连接,返回一个Connection con对象                   
            System.out.println("Connecting Successful!!!!!");//控制台输出Connecting Successful!!!!!           
            stmt = con.createStatement();//执行对象Statement负责执行SQL语句,由Connection对象产生
            rs = stmt.executeQuery("select * from student");//Statement对象stmt执行查询操作,返回结果集
            while(rs.next()){        //rs.getInt("id");从结果集rs  的“id”列,获取int型的 值
                System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("sex"));
            }                        
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            try {
                rs.close();        
                stmt.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
        }
        
    }

}
方式二:采用SQL Server身份验证方式--连接SQL Server
    public static void main(String[] args) {
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;           
        String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        //数据库URL[即:是要连接那一个数据库]localhost--指定本机;integratedSecurity=true--指定windows验证模式连接
        String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=studentdb";         
        try {
            Class.forName(driver);//加载驱动
            //建立连接,返回一个Connection con对象
            con = DriverManager.getConnection(dbURL,"sa","123");//在本机数据库中已设置登录名“sa”,密码“123”
        
            System.out.println("Connecting Successful!!!!!");
            
            stmt = con.createStatement();
            rs = stmt.executeQuery("select * from student");
            while(rs.next()){
                System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("sex"));
            }                        
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            try {
                rs.close();    //关闭资源
                stmt.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            
        }
        
    }

最常见的问题:
警告: Failed to load the sqljdbc_auth.dll
com.microsoft.sqlserver.jdbc.SQLServerException: 没有为集成身份验证配置驱动程序。
尝试方式:
1、把sqljdbc\chs\auth\x64下的sqljdbc_auth.dll文件拷贝到:C:\Windows\System32。[32位的x64同理]
2、把sqljdbc_auth.dll文件复制到bin文件夹看看,就是JDK的bin,像我的就是C:\Program Files (x86)\jdk1.8.0_65\bin。[在jre文件夹下的bin也复制一个]

还有就是:出现有“此驱动程序不支持JRE1.7,请使用支持JDBC4.0的sqljdbc4.jar的类库”的问题。不同版本驱动,支持的JRE不同,可能需要切换JRE版本。

JDBC连接SQL Server数据库[windows验证模式连接+SQL server验证]相关推荐

  1. SQL Server数据库单用户模式设置

    将数据库设置为单用户模式 单用户模式是指只有一个用户可以访问某个资源的状态. SQL Server数据库单用户模式设置 在进行一些数据库操作时,需要先把数据库设置为单用户模式,操作完成后再改回普通模式 ...

  2. Django连接使用SQL Server数据库(windows版)

    2019独角兽企业重金招聘Python工程师标准>>> 前言: 众所周知,Django 默认支持sqlite,mysql,oracle,postgresql数据库,不支持SQL Se ...

  3. SQL Server 数据库单用户模式处理

    在还原数据库bak备份文件时,由于某种原因(具体何种原因在此不进行分析)导致数据库还原后处于单用户模式,如下图: 单个用户模式导致,数据库无法打开,只能通过脚本去查询数据库内的表,然后进行查询数据,极 ...

  4. SQL Drop数据库– MySQL,PostgreSQL,SQL Server

    SQL Drop Database SQL Drop数据库 When we work with the database there are very rare cases when we want ...

  5. SQL创建数据库– PostgreSQL,MySQL,SQL Server

    The start of data storage is from the creation of a database. As the name suggests database is a bas ...

  6. 高版本sql server数据库复制到低版本sql server数据库

    前提,复制数据库需要在局域网内才行,理论上只要是高版本还原数据到低版本,这个方法都行 一.先在sql server2014 上选择要复制的数据库,右键>任务>生成脚本,然后一直下一步到生成 ...

  7. 安卓怎么连接服务器的数据库文件,安卓怎么连接服务器的数据库文件

    安卓怎么连接服务器的数据库文件 内容精选 换一换 文档数据库服务支持开启公网访问功能,通过弹性IP进行访问.您也可通过弹性云服务器的内网访问文档数据库.要将已有的MongoDB数据库迁移到文档数据库, ...

  8. navicat无法连接远程mysql数据库_navicat无法远程连接mysql的解决方法

    近日在Ubuntu上安装了一个 MySQL 5.0,因为使用 phpMyAdmin 还必须安装 PHP,所以打算直接使用远程管理工具Navicat for MySQL 来连接. 在 Ubuntu 中通 ...

  9. centos6安装mysql并远程连接_MySQL5.7数据库安装与远程连接

    系统:Redhat Linux 7.7 MySQL版本:5.7 1. MySQL下载 o 登录网站:https://dev.mysql.com/downloads/mysql/ o 选择合适版本与系统 ...

最新文章

  1. mysql8.0.28忘记密码
  2. 简单轻松学 Linux 之 awk
  3. 应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序
  4. mysql 变量null_如何检查变量是否为NULL,然后使用MySQL存储过程进行设置?
  5. android studio快捷键大全
  6. 英雄联盟手游火线妹上线了!金克丝也想成为第一AD吗?
  7. jarsigner签名过程
  8. python怎么清空屏幕_python如何清屏
  9. 阿里云python中文社区_python写中文
  10. python中 str 和 repr_Python中__repr__和__str__区别详解
  11. jQuery 知识点大纲
  12. vsto从入门到精通--专栏目录
  13. Flutter关于简单的吸顶通讯录制作
  14. 一个链接搞定源码下载
  15. 2020神舟几号发射_神舟九号和神舟十号是什么时候发射的,宇航员分别是谁?...
  16. VS下EXE可执行文件启动代码剖析(2)_mtinit函数
  17. CM源码(CyanogenMod)源码编译
  18. docker exec命令-进入docker中
  19. 智能送药小车解说(国二)
  20. Git分布式版本控制工具【IDEA版】【安装和使用以及上传代码到Gitee】(一篇文章精通系列)

热门文章

  1. 【前端面试指南】应届生该怎么谈期望薪酬?
  2. python extend_Python 列表 extend() 使用方法及示例
  3. 微博、博客、qq(IM)区别与联系
  4. F盘文件系统RAW文件怎样恢复
  5. 字体的样式及字体的分类
  6. 阿里最爱篮球高管 老家建5904平米体育馆
  7. 第十四周 OJ平台-国家排序
  8. 早睡早起使人健康、富裕又聪明
  9. DNSPod十问林洪祥:顶级带货主播,其实是数字人?
  10. 蛋鸡养殖智能环控系统方案