版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1336879
操作系统:编程环境: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也彻底解决了这个问题,因此升级也是个不错的选择。
发生此类问题肯定还有其他原因和解决方案,如果您还有所补充,欢迎您给我回复,互相学习,共同进步。