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

简介: 操作系统:编程环境:VS2013; 语言:VB.net; 数据库:SQLserver2008 做数据库连接时,发生的错误:

      错误背景:

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

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

      错误提示为:

36.png

      说明:用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? ,在这个帖子下面有这样一句评论:


37.png


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

38.png


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

 

 

      总结:

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

   

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


相关文章
|
1月前
|
缓存 监控 数据可视化
linux查看内存信息
在Linux中检查内存使用:`free -h`或`-m`显示简洁内存统计;`cat /proc/meminfo`获取详细信息;`top`或`htop`(如果安装)实时监控进程内存占用;`vmstat`查看虚拟内存统计;`sar -r`(需要sysstat)报告系统内存活动。图形工具如Gnome System Monitor提供可视化界面。
28 4
|
2月前
|
存储 JSON 监控
Higress Controller**不是将配置信息推送到Istio的内存存储里面的**。
【2月更文挑战第30天】Higress Controller**不是将配置信息推送到Istio的内存存储里面的**。
15 1
|
3月前
|
弹性计算 网络安全 虚拟化
ECS快照问题之提取内存信息失败如何解决
阿里云ECS用户可以创建的一个虚拟机实例或硬盘的数据备份,用于数据恢复和克隆新实例;本合集将指导用户如何有效地创建和管理ECS快照,以及解决快照过程中可能遇到的问题,确保数据的安全性和可靠性。
|
4月前
|
Linux
|
29天前
|
存储 编译器 Linux
匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参
匿名结构体类型、结构体的自引用、结构体的内存对齐以及结构体传参
|
1天前
|
编译器
LabVIEW使用性能和内存信息
LabVIEW使用性能和内存信息
|
1天前
|
存储 缓存 算法
深入浅出JVM(二)之运行时数据区和内存溢出异常
深入浅出JVM(二)之运行时数据区和内存溢出异常
|
2月前
|
编译器 C语言
[字符串和内存函数]错误信息报告函数strerror详解
[字符串和内存函数]错误信息报告函数strerror详解
28 2
[字符串和内存函数]错误信息报告函数strerror详解
|
4月前
|
存储 JSON 运维
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
【运维】Powershell 服务器系统管理信息总结(进程、线程、磁盘、内存、网络、CPU、持续运行时间、系统账户、日志事件)
54 0
|
4月前
|
C++
C++多线程场景中的变量提前释放导致栈内存异常
C++多线程场景中的变量提前释放导致栈内存异常
25 0