从 Java 连接到 SQL Server 2016 时出现 EXCEPTION_ACCESS_VIOLATION

Posted

技术标签:

【中文标题】从 Java 连接到 SQL Server 2016 时出现 EXCEPTION_ACCESS_VIOLATION【英文标题】:EXCEPTION_ACCESS_VIOLATION while connecting to SQL Server 2016 from Java 【发布时间】:2017-09-19 21:36:02 【问题描述】:

以下是我尝试连接数据库时出现的错误:

A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006d21cef5, pid=10392, tid=14036
#
# JRE version: Java(TM) SE Runtime Environment (8.0_60-b27) (build 1.8.0_60-b27)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.60-b23 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V  [jvm.dll+0x13cef5]
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\Sathi\workspace\JDBC1\hs_err_pid10392.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#

下面是我的基本代码:

    package com.info.dbconnection;

    import java.sql.*;
    public class DataBaseConnection 

        public static Connection getConnection()
            Connection con = null;

            try 
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                 con = DriverManager
                        .getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=SampleDB;integratedSecurity=true;");
                 System.out.println("Connection has been created:: " + con);
             catch (ClassNotFoundException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
             catch (SQLException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
            

            return con;
        
    

【问题讨论】:

嗯,您运行的是相当旧的 Java 8 版本(最新版本是 1.8.0_144),因此您可能应该升级。您还应该验证您使用的是 Microsoft 的 SQL Server JDBC 驱动程序的最新版本。 你这里使用的JDBC驱动是什么版本? 我正在使用 Microsoft 的 SQL Server JDBC 驱动程序 6.0。我尝试更新 JRE 最新版本,但得到了同样的错误。 # Java Runtime Environment 检测到致命错误:# # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000711ef255, pid=2692, tid=0x0000000000001e64 # # JRE version: Java(TM) SE Runtime Environment (8.0_144-b01) ( build 1.8.0_144-b01) # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.144-b01 混合模式 windows-amd64 压缩 oops) # 有问题的框架: 【参考方案1】:

下载最新版本的sqlserver驱动(sqljdbc)

【讨论】:

您应该为您的帖子提供更多背景信息才能成为一个好的答案,例如尝试解释什么表明 OP 应该更新驱动程序。您的答案现在更像是评论

以上是关于从 Java 连接到 SQL Server 2016 时出现 EXCEPTION_ACCESS_VIOLATION的主要内容,如果未能解决你的问题,请参考以下文章

我可以从 Java EE webapp 使用 Windows 身份验证连接到 SQL Server 吗?

从 Java 连接到 SQL Server 2016 时出现 EXCEPTION_ACCESS_VIOLATION

Java(netbeans):数据库已连接到 SQL Server,我需要从 netbeans 界面更新和删除数据

无法从 Docker 容器连接到外部 SQL Server

无法用java连接到sql server

我无法使用带有 Android Studio 的 JDBC 连接到 SQL Server Express