如何解决 SQL ConnectionString 错误?

时间:2021-01-13 00:33:54

标签: vb.net oledb

我有一个带有 DataGridView 和一个按钮的表单。他们正在与 Access (.mdb) 数据库进行交互。单击按钮时,我希望它更新表中的数据。

我收到以下错误:

<块引用>

“OleDbConnection”类型的值无法转换为 'SqlConnection'。

我的代码:

Imports System.Data.OleDb
Imports System.Data.SqlClient

Public Class Form1
    Public conn As New OleDbConnection

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim DS As New DataSet
        Dim DT As New DataTable
        DS.Tables.Add(DT)
        Dim objConn As String = "Provider=Microsoft.JET.OLEDB.4.0; Data Source = Swiftest.mdb"
        conn.ConnectionString = objConn
        Dim objDA As New OleDb.OleDbDataAdapter("SELECT * FROM tblOptions", conn)
        objDA.Fill(DT)
        DataGridView1.DataSource = DT.DefaultView
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim SqlQuery As String = "'UPDATE tblOptions Set fldShow = '1' WHERE fldID = '13'"
        conn.Open()
        Dim com As New SqlCommand(SqlQuery, conn)
    End Sub
End Class

感谢阅读

1 个答案:

答案 0 :(得分:0)

几个可用的数据库对象是 ADO.net 有 .Dispose 方法。如果对象具有 dispose 方法,则它可能正在使用非托管资源(.net 框架之外的资源)。这些对象需要释放这些资源,它们在 dispose 方法中执行此操作。幸运的是,.net 语言提供了 Using...End Using 块,即使出现错误也能保证调用 .Dispose

鉴于此,在使用它们的 SubFunction 中创建您的数据库对象,以便它们可以包含在 Using 块中。请注意连接 Using 行末尾的逗号。这表明下一行的对象(命令)包含在同一个 Using 块中。

在您的 Form.Load 事件中,您从未使用过适配器或数据集。只需加载数据表。

在最后可能的时刻打开连接,直接在 .Execute... 之前,并立即用 End Using 关闭。在您的 Button1.Click 事件中,您打开一个连接,从不执行任何操作,也从不关闭它。

在您的更新命令中,您将文字提供为 String。通常,ID 字段是 Integer。检查数据库中字段的数据类型。如果您想提供不是文字的值,请使用参数。

Private connStr As String = "Provider=Microsoft.JET.OLEDB.4.0; Data Source = Swiftest.mdb"

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim DT As New DataTable

    Using conn As New OleDbConnection(connStr),
          cmd As New OleDbCommand("SELECT * FROM tblOptions", conn)
        conn.Open()

        Using reader = cmd.ExecuteReader
            DT.Load(reader)
        End Using
    End Using

    DataGridView1.DataSource = DT.DefaultView
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Using conn As New OleDbConnection(connStr),
          cmd As New OleDbCommand("UPDATE tblOptions Set fldShow = '1' WHERE fldID = '13'", conn)
        conn.Open()
        cmd.ExecuteNonQuery()
    End Using
End Sub
相关问题