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

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,java高级)