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



           错误背景:

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

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

           错误提示为:

                              


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

           第一种情况:

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

           另外一种情况:

                  当把“ Server=(Local)”换为 “ Server=192.168.24.123 ”。即把local换为数据库serverIP地址时,连接不成功。出现如上错误(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也彻底攻克了这个问题,因此升级也是个不错的选择大笑

           
           发生此类问题肯定还有其它原因和解决方式,假设您还有所补充,欢迎您给我回复,互相学习。共同进步。奋斗

  • 相关阅读:
    感受 lambda 之美!
    aop实现打印相关日志信息2
    搭建 MinIO Gateway 的一点点问题
    SSH用于隧道代理的一些场景
    在c++中,有哪4个与类型转换相关的关键字,这些关键字各有什么特点,应该在什么场合下使用?
    机器学习梯度下降算法
    机器学习线性回归、代价函数
    机器学习监督学习和无监督学习
    my live house soud / audio / HiFi / xiaodu dajingang
    java voice / webrtc / WebRTC / Web RealTime Communication
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7162280.html
Copyright © 2020-2023  润新知