System.AccessViolationException”类型的未经处理的异常在 System.Data.dll 中发生。其他信息:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/28388659

       错误背景:

       操作系统:编程环境:VS2013;  语言:VB.net;  数据库:SQLserver2008

       做数据库连接时,发生的错误:

       错误提示为:

       说明:用VB.net连接SQLServer数据库

第一种情况:

              连接字符串为“Server=(Local);Database=charge_sys;UserID = sa;Password=123456”时,连接没问题;

第二种情况:

              当把“ Server=(Local)”换为 “ Server=192.168.24.123 ”,即把local换为数据库服务器IP地址时,连接不成功,出现如上错误(PS:其他人的机器上就可以)。

       第一种情况的代码:

    Public Class UserDAO
        Public connStr As String = "Server=(Local);Database=charge_sys;User ID = sa;Password=123456"
        Public Function UserLogin(ByVal userName As String, ByVal password As String) As Boolean
     <span style="white-space:pre">	</span>    Dim conn As New SqlConnection(connStr)
            Dim dbcmd As New SqlCommand
            Dim reader As SqlDataReader
       <span style="white-space:pre">	</span>    Dim sqlStr As String = "select * from User_Info where userID=@userName and PWD=@password"
            '与数据库建立连接
            conn.Open()
            '操作数据库
            dbcmd = New SqlCommand(sqlStr, conn)
            dbcmd.Parameters.Add(New SqlParameter("@userName", userName))
            dbcmd.Parameters.Add(New SqlParameter("@password", password))
            reader = dbcmd.ExecuteReader
            If reader.Read Then
                Return True
            Else
                Return False
            End If
            '关闭与数据库的连接
            conn.Close()
        End Function
    End Class

      第二种情况的代码

    Public Class UserDAO
        Public connStr As String = "Server=192.168.24.123;Database=charge_sys;User ID = sa;Password=123456"
        Public Function UserLogin(ByVal userName As String, ByVal password As String) As Boolean
     <span>	</span>    Dim conn As New SqlConnection(connStr)
            Dim dbcmd As New SqlCommand
            Dim reader As SqlDataReader
       <span>	</span>    Dim sqlStr As String = "select * from User_Info where userID=@userName and PWD=@password"
            '与数据库建立连接
            conn.Open()
            '操作数据库
            dbcmd = New SqlCommand(sqlStr, conn)
            dbcmd.Parameters.Add(New SqlParameter("@userName", userName))
            dbcmd.Parameters.Add(New SqlParameter("@password", password))
            reader = dbcmd.ExecuteReader
            If reader.Read Then
                Return True
            Else
                Return False
            End If
            '关闭与数据库的连接
            conn.Close()
        End Function
    End Class

两种代码的不同之处仅仅在于数据库连接字符串中的Server值不同

       解决方法:

       第一种方法:

       重置winsock,我的系统为Win7 64位旗舰版,用管理员身份运行:netsh winsock reset ,重启,得到解决。其他系统重置方法或者出现问题,可参考百度百科《netsh winsock reset》

第一种方法:

       更新.NET Framework。

       在VisualStudio的反馈中心找到了解决方法:After installing VS 2013 unable to add data connections? ,在这个帖子下面有这样一句评论:

        在VS中看了一下.NET Framework的版本:

        于是去下载了最新版本的.NET Framework4.5.2(点击跳到下载链接),安装之后上述问题“ ‘System.AccessViolationException’ 类型的未经处理的异常在 System.Data.dll 中发生” 得到完美解决。

       总结:

       发生此问题“ ‘System.AccessViolationException’ 类型的未经处理的异常在 System.Data.dll 中发生”,可能是安装了VS2013后对系统中的winsock接口产生影响,因此第一种方法重置winsock可以解决;微软最近几天刚发布的.NET Framework4.5.2也彻底解决了这个问题,因此升级也是个不错的选择。

       发生此类问题肯定还有其他原因和解决方案,如果您还有所补充,欢迎您给我回复,互相学习,共同进步。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java进阶架构师

解密Dubbo:自己动手编写一个较为完善的RPC框架(两万字干货)

现在很多企业都在使用Dubbo或者Spring Cloud做企业的微服务架构,其实对于Dubbo最核心的技术就是RPC调用,现在我们就来动手自己编写一个RPC框...

24650
来自专栏java 成神之路

基于ReentrantLock发生死锁的解决方案

33460
来自专栏C/C++基础

Linux命令(29)——ls命令

ls命令用来显示目录内容,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。

7510
来自专栏宋凯伦的技术小栈

【Node.js】Stream(流)的学习笔记

  最近学习使用Node.js创建http proxy server,少不了要跟Stream打交道。昨天开始查阅一些资料,多少有了一些粗浅了解。整理在这里,供学...

22560
来自专栏大内老A

通过自定义ServiceHost实现对WCF的扩展[实例篇]

在《原理篇》中我们谈到了通过自定义ServiceHost对WCF进行扩展的本质,以及在IIS/WAS寄宿情况下ServiceHostFactory的作用。接下来...

29170
来自专栏前端杂货铺

巧妙复制一个流

实际业务中可能出现重复消费一个可读流的情况,比如在前置过滤器解析请求体,拿到body进行相关权限及身份认证;认证通过后框架或者后置过滤器再次解析请求体传递给业务...

10930
来自专栏人工智能LeadAI

ElasticSearch优化系列二:机器设置(内存)

预留一半内存给Lucence使用 一个常见的问题是配置堆太大。你有一个64 GB的机器,觉得JVM内存越大越好,想给Elasticsearch所有64 GB的内...

46940
来自专栏地方网络工作室的专栏

Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本

Shell 命令行,写一个自动整理 ~/Downloads/ 文件夹下文件的脚本 在 mac 或者 linux 系统中,我们的浏览器或者其他下载软件下载的文件全...

303100
来自专栏一枝花算不算浪漫

页面静态化技术Freemarker技术的介绍及使用实例.

42960
来自专栏逸鹏说道

C# 温故而知新: 线程篇(四)

线程同步篇 (中):同步工具类的介绍 1 上篇回顾 2 继续介绍基元内核模式中的 monitor类 3 同步句柄:WaitHandle 4 EventW...

32060

扫码关注云+社区

领取腾讯云代金券