vb.net |使用OleDB更新DB

时间:2010-04-02 19:42:20

标签: vb.net oledb

我用OleDB写了一个与DB连接的模块,'sub UpdateClients'不起作用,DB不更新。

缺少什么或错了什么?

这一行 - > “daClient.Update(dsClient,”CLUB_CLIENT“)” - >不要工作 (抱歉我的英语,我不太好)

数据库在此行之后不会更新(就像我预期的那样)

我的代码中缺少什么?我希望我的数据库会更新。 “txtid”将在我的表中的“ClntId”中。

Module mdlDB
    Const CONNECTION_STRING As String = _
          "provider= Microsoft.Jet.OleDB.4.0;Data Source=DbHalf.mdb;mode= Share Deny None"
    Dim daClient As New OleDb.OleDbDataAdapter
    Dim dsClient As New DataSet
    Dim cmClient As CurrencyManager

    Public Sub OpenClients(ByVal txtId, ByVal txtName, ByVal BindingContext)

        Dim Con As New OleDb.OleDbConnection(CONNECTION_STRING)
        Dim sqlClient As New OleDb.OleDbCommand

        Con.Open()
        sqlClient.CommandText = "SELECT*"
        sqlClient.CommandText += "FROM tblClubClient"
        sqlClient.Connection = Con
        daClient.SelectCommand = sqlClient

        dsClient.Clear()
        daClient.Fill(dsClient, "CLUB_CLIENT")

        cmClient = BindingContext(dsClient, "CLUB_CLIENT")
        cmClient.Position = 0

        txtId.DataBindings.Add("text", dsClient, "CLUB_CLIENT.ClntId")
        txtName.DataBindings.Add("text", dsClient, "CLUB_CLIENT.ClntName")

        Con.Close()

    End Sub

    Public Sub UpdateClients(ByVal txtId, ByVal txtName, ByVal BindingContext)

        Dim cb As New OleDb.OleDbCommandBuilder(daClient)

        cmClient = BindingContext(dsClient, "CLUB_CLIENT")

        dsClient.Tables("CLUB_CLIENT").Rows(cmClient.Position).Item("ClntId") = txtId.Text
        dsClient.Tables("CLUB_CLIENT").Rows(cmClient.Position).Item("ClntName") = txtName.Text

        daClient.Update(dsClient, "CLUB_CLIENT")

    End Sub

End Module

1 个答案:

答案 0 :(得分:0)

有时候这些论坛的人会被“论坛协议”或“论坛礼仪”所笼罩(如果你想在黑桃中看到这一点,请查看苹果开发者论坛。)

答案被埋没了,有评论---具体来说:

由于您在OpenClients()--->中关闭连接Con.Close(),它在UpdateClients()例程中不可行。

我还将强调关于使用TRY / CATCH的评论意见,并补充一点,因为数据库连接可以神秘地“消失”,你还可以在任何子程序中添加对Con.State(即开放或封闭数据库连接)的检查。期望数据库连接打开。如果检查失败,您可以在继续之前重新调用OpenClients()子例程。