Обновление данных в DB Access

Форум посвящён работе с базами данных в .NET.

Модератор: Ramzes

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Обновление данных в DB Access

Сообщение krukovis84 » 14.10.2010 (Чт) 0:53

Делаю так:
Код: Выделить всё
        'путь к бд и имя таблицы для выполнения запроса
        Dim DBFileName As String = Application.StartupPath & "\Lector.mdb"
        Dim DBTableName As String = "[tabStudent]"
        'инициализируем объекты для работы с бд
        Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFileName)
        Dim da As New OleDb.OleDbDataAdapter()
        Dim tbl As New DataTable
        Dim dbCommandBuilder As New OleDb.OleDbCommandBuilder(da)
        'Объявляем команду выбора
        da.UpdateCommand = New OleDb.OleDbCommand( _
                "UPDATE " & DBTableName & _
                " SET txtScndName = " & txtScndName.Text & _
                " , txtName = " & txtName.Text & _
                " , txtPatr = " & txtPatr.Text & _
                " , txtOrg = " & txtOrg.Text & _
                " , txtSection = " & txtSection.Text & _
                " , txtPost = " & txtPost.Text & _
                " , dtStartWork = " & dtStartWork.Text & _
                " , txtEducation = " & txtEducation.Text & _
                " , txtExp = " & txtExp.Text & _
                " , txtTraining = " & txtTraining.Text & _
                " WHERE ID = " & lblID.Text, cn)
        da.UpdateCommand.UpdatedRowSource = UpdateRowSource.Both

Ошибок не выдает , запись не обновляется... Че делать?

И вопрос нужна ли вот такая приписка:
Код: Выделить всё
        With da.UpdateCommand.Parameters
            .Add(txtScndName.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtScndName"
            .Add(txtName.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtName"
            .Add(txtPatr.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtPatr"
            .Add(txtOrg.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtOrg"
            .Add(txtSection.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtSection"
            .Add(txtPost.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtPost"
            .Add(dtStartWork.Text, OleDb.OleDbType.VarWChar).SourceColumn = "dtStartWork"
            .Add(txtEducation.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtEducation"
            .Add(txtExp.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtExp"
            .Add(txtTraining.Text, OleDb.OleDbType.VarWChar).SourceColumn = "txtTraining"
            .Add(lblID.Text, OleDb.OleDbType.VarWChar).SourceColumn = "ID"
        End With


Я по примеру http://bit.pirit.info/forum/viewtopic.php?t=9571 пытаюсь разобраться. Там есть, но по-моему оно не надо.
Подскажите как быть?

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Обновление данных в DB Access

Сообщение FireFenix » 14.10.2010 (Чт) 17:22

krukovis84 писал(а):И вопрос нужна ли вот такая приписка

Если указываешь все данные в запросе - приписка не нужна

krukovis84 писал(а):Ошибок не выдает , запись не обновляется... Че делать?

Открыть соединение + выполнить запрос

Код: Выделить всё
Public Shared Function UpdateRows(ByVal connectionString As String, ByVal queryString As String, ByVal tableName As String) As DataSet

    Dim dataSet As DataSet = New DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)

        connection.Open()

        adapter.Fill(dataSet, tableName)

        ' Code to modify data in DataSet here

        builder.GetUpdateCommand()

        ' Without the OleDbCommandBuilder this line would fail.
        adapter.Update(dataSet, tableName)
    End Using

    Return dataSet
End Function

http://msdn.microsoft.com/ru-ru/library ... ilder.aspx
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Обновление данных в DB Access

Сообщение krukovis84 » 14.10.2010 (Чт) 22:32

FireFenix, спасибо! Но, пример ты привел не в тему немного по-моему =). Зато совет дал очень правильный!
Кто будет смотреть эту тему расшифрую что имел ввиду FireFenix:
FireFenix писал(а):Открыть соединение + выполнить запрос

Код: Выделить всё
       
        Dim DBFileName As String = Application.StartupPath & "\BD.mdb" 'Путь к вашему файлу БД.
        Dim connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFileName
        Dim sqlQuery As String = "Ваш запрос" 
        Dim connection As New OleDbConnection(connectionString)
        connection.Open()
        Dim cmd As OleDbCommand
        cmd = New OleDbCommand(sqlQuery, connection)
        cmd.ExecuteNonQuery()

Это работает четко и напрямую с базой данных без всяких промежуточных DataSet и прочей ерунды.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Обновление данных в DB Access

Сообщение FireFenix » 15.10.2010 (Пт) 0:09

krukovis84 писал(а):FireFenix, спасибо! Но, пример ты привел не в тему немного по-моему =)

Ну в первом посте небыло - как именно требуется выполнить запрос, и используется класс OleDbDataAdapter, который может быть связан с чем-то - вот я привёл пример :)

Вообще при большом желании - можно было посмотреть соседние темы и найти мой код viewtopic.php?f=29&t=42327#p6745468 :D
или заюзать поиск по используемым классам, что также бы нашло мой пост и + viewtopic.php?f=5&t=42466#p6746658 :)
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Обновление данных в DB Access

Сообщение krukovis84 » 15.10.2010 (Пт) 0:58

Ну так я ж пинка ждал! :D Откуда я знал в какую сторону искать :D.
Получил волшебный пендель и разобрался. Дописал сейчас все остальные действия через запросы. Очень доволен собой :lol:
Все просто и понятно. И работает как я сказал, а не как какой то Builder придумает.


Вернуться в ADO.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

    TopList