vb 上的 System.Data.dll 中发生错误 System.InvalidOperationException' [重复]

Posted

技术标签:

【中文标题】vb 上的 System.Data.dll 中发生错误 System.InvalidOperationException\' [重复]【英文标题】:Error System.InvalidOperationException' occurred in System.Data.dll on vb [duplicate]vb 上的 System.Data.dll 中发生错误 System.InvalidOperationException' [重复] 【发布时间】:2019-03-27 14:33:59 【问题描述】:

我不知道如何解决这个问题,我已经尝试了所有方法。

错误 System.Data.dll 中发生 System.InvalidOperationException'

附加信息:提供程序“Microsoft.ACE.Oledb.12.0”未在本地计算机上注册。

在此代码行上弹出 commLogin.Connection.Open()

我需要帮助!

    If TextBox1.Text = "" Then
        MessageBox.Show("Username!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Error)
        TextBox1.Focus()
    ElseIf TextBox2.Text = "" Then
        MessageBox.Show("Password!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Error)
        TextBox2.Focus()
    Else
        Dim conLogin As New OleDb.OleDbConnection("PROVIDER=Microsoft.ACE.Oledb.12.0; Data Source = E:\projeto.mdb")
        Dim commLogin As New OleDb.OleDbCommand("SELECT login.password FROM login WHERE nome_util = @username AND password = @password", conLogin)
        Dim usernameParam As New OleDb.OleDbParameter("@username", Me.TextBox1.Text)
        Dim passwordParam As New OleDb.OleDbParameter("@password", Me.TextBox2.Text)

        commLogin.Parameters.Add(usernameParam)
        commLogin.Parameters.Add(passwordParam)
        commLogin.Connection.Open()

        Dim reader As OleDb.OleDbDataReader = commLogin.ExecuteReader()
        If reader.HasRows Then
            MessageBox.Show("ggwp", "Login", MessageBoxButtons.OK, MessageBoxIcon.Information)
            principal.Show()
            Me.Hide()
        Else
            MessageBox.Show("Keep Trying", "Login", MessageBoxButtons.OK, MessageBoxIcon.Error)
            TextBox1.Clear()
            TextBox2.Clear()
            TextBox1.Focus()
        End If
        commLogin.Connection.Close()
    End If

【问题讨论】:

【参考方案1】:

InvalidOperationException 用于由于无效参数以外的原因导致调用方法失败的情况。通常在对象的状态不能支持方法调用时抛出;在你的情况下commLogin.Connection.Open()

提供程序“Microsoft.ACE.Oledb.12.0”未在本地计算机上注册。

这个错误是因为Ace.Oledb.12.0默认没有安装。你可以安装它here。

作为旁注,请查看 Using Statements 以在您完成资源处理后对其进行处置。

来源:InvalidOperationException

【讨论】:

或者它在那里,但项目/ACE 有不同的位数。 @Jimi 正确,可能不同;我只是假设最常见的原因是默认情况下没有安装它; x64 版本。

以上是关于vb 上的 System.Data.dll 中发生错误 System.InvalidOperationException' [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C# - INSERT INTO 语句中的语法错误(System.Data.dll 中发生“System.Data.OleDb.OleDbException”类型的未处理异常)

VB访问冲突错误

ODBC 连接:“连接已被禁用”

VB.net 用户登陆界面

未经处理的异常在 System.Data.dll 中发生。其它信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。

从 vb.net 将值插入 Access db