vb.net | Обновить БД с помощью OleDB - PullRequest
0 голосов
/ 02 апреля 2010

Я написал модуль подключения к БД с OleDB, и «sub UpdateClients» не работает, БД не обновляется.

что отсутствует или не так?

эта строка -> "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 голосов
/ 06 апреля 2010

Иногда люди на этих форумах зацикливаются на «протоколе форума» или «этикете форума» (Если вы хотите увидеть это в пиках, взгляните на форумы разработчиков яблок.)

Ответ похоронен, есть комментарии --- конкретно:

Поскольку вы закрываете соединение в OpenClients () ---> Con.Close (), оно недопустимо в процедуре UpdateClients ().

Я также подчеркну прокомментированную идею об использовании TRY / CATCH, а также добавлю, что, поскольку соединения с базой данных могут таинственным образом «исчезать», вы также можете добавить проверку Con.State (то есть, открытое или закрытое соединение с базой данных) в любых подпрограммах, ожидать, что соединение с базой данных будет открыто. если проверка не пройдена, вы можете повторно вызвать подпрограмму OpenClients (), прежде чем продолжить.

...