【问题标题】:vb.net | Update DB with OleDBvb.net |使用 OleDB 更新数据库
【发布时间】:2011-02-09 19:14:46
【问题描述】:

我用 OleDB 编写了一个与 DB 连接的模块,但“子 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

【问题讨论】:

  • 缺少的是您对问题所在的描述。
  • 您的数据集已断开连接。约翰是对的……很难理解你在寻找什么。
  • 这一行 -> "daClient.Update(dsClient, "CLUB_CLIENT")" -> 不起作用(对不起我的英语,我不太好)数据库在之后没有更新这一行(如我所料)我的代码中缺少什么?我希望我的数据库将更新(“txtid”将在我的表中的“ClntId”中。“您的数据集已断开连接”-您的意思是什么?con.open()?
  • 是的,您必须重新建立连接,您应该在所有 UpdateClient 方法周围添加一条 try-catch 语句。您可能会发现异常。另一种想法是,您尚未指定更新命令。我不知道绑定上下文是否需要它,但我认为。朱

标签: vb.net oledb


【解决方案1】:

有时这些论坛中的人会沉迷于“论坛协议”或“论坛礼仪”(如果您想深入了解这一点,请查看苹果开发者论坛。)

答案被埋在那里是 cmets--- 具体来说:

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

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

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2011-09-03
    相关资源
    最近更新 更多