Внесение данных в Access с помощью VB.NET

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

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

Внесение данных в Access с помощью VB.NET

Сообщение krukovis84 » 06.10.2009 (Вт) 23:53

Всем привет!
Недавно начал разбираться VB.NET (Visual Studio 2008). Хочу переделать свою базу написанную в VB 6. Застопорился на внесении данных в таблицу Access. Какими операторами здесь это делается?
Мне, грубо говоря, нужно создать запись в таблице и заполнить поля данными из текстбоксов с формы и сохранить. Подскажите в какую сторону думать, плиз!

З.Ы. Если такие вопросы нужно создавать в .NEТ-форуме. Прошу перекинуть тему туда и простить... :roll:

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Внесение данных в Access с помощью VB.NET

Сообщение Roman Koff » 07.10.2009 (Ср) 9:00

Работа с акцесом может производиться с помощью пространства System.Data.OleDb.
В свое время писал маленькую либу для работы с акцесом, поразбирайся с кодом, может ченить пригодится:

Код: Выделить всё
Imports System.Data
Imports System.Data.OleDb

Namespace DB

   Public Class OleDbClass : Implements System.IDisposable

      Public Connection As OleDbConnection
      Public Command As OleDbCommand
      Public DataReader As OleDbDataReader
      Public Result As Integer = 0
      Public ErrorMessage As String = ""

      Private _ConnectionString As String = ""
      Private _FieldPrefix As String = ""
      Private _DisposedValue As Boolean = False

      ' propeties ---------------------------------------------------------------------------------

      WriteOnly Property FieldPrefix() As String
         Set(ByVal value As String)
            Me._FieldPrefix = "@" & value
         End Set
      End Property

      ' functions ---------------------------------------------------------------------------------

      Function GetDataTable() As DataTable
         Dim _DataAdapter As New OleDbDataAdapter(Me.Command)
         Dim _DataTable As New DataTable
         _DataAdapter.Fill(_DataTable)
         Return _DataTable
      End Function

      Function GetInt(ByVal pFieldName As String) As Integer
         Dim _FieldName As String = Me._FieldPrefix & pFieldName
         Dim _Param As New OleDbParameter(_FieldName, System.Data.OleDb.OleDbType.Integer)
         _Param.Direction = ParameterDirection.Output
         Me.Command.Parameters.Add(_Param)
         Try
            Me.Connection.Open()
            Me.Command.ExecuteNonQuery()
         Catch
            Return -1
         Finally
            If Me.Connection.State = ConnectionState.Open Then Me.Connection.Close()
         End Try
         Return CType(_Param.Value, Integer)
      End Function

      Function GetValue(Of T)(ByVal pFieldName As String, ByVal pNullValue As T) As T
         Dim _FieldName As String = Me._FieldPrefix & pFieldName
         Dim _Value As T
         Dim _Data As Object = Me.DataReader(_FieldName)
         If Convert.IsDBNull(_Data) Then
            _Value = pNullValue
         Else
            _Value = CType(_Data, T)
         End If
         Return _Value
      End Function

      ' methods -----------------------------------------------------------------------------------

      Sub SetSql(ByVal pSql As String)
         Me.Connection = New OleDbConnection(Me._ConnectionString)
         Me.Command = New OleDbCommand(pSql, Me.Connection)
         Me.Command.CommandType = CommandType.Text
      End Sub

      Sub DataReaderOpen()
         Me.Connection.Open()
         Me.DataReader = Me.Command.ExecuteReader
      End Sub

      Sub DataReaderClose()
         Me.DataReader.Close()
         Me.Connection.Close()
      End Sub

      '============================================================================================

      Sub New(ByVal pDataBaseFile As String)
         Me._ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & pDataBaseFile
      End Sub

      Protected Overridable Sub Dispose(ByVal disposing As Boolean)
         If Not Me._DisposedValue Then
            If disposing Then
               ' TODO: free managed resources when explicitly called
            End If
            ' TODO: free shared unmanaged resources
            Me.Command.Dispose()
            Me.Connection.Dispose()
         End If
         Me._DisposedValue = True
      End Sub

      Public Sub Dispose() Implements IDisposable.Dispose
         Dispose(True)
         GC.SuppressFinalize(Me)
      End Sub

   End Class

End Namespace
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

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

Re: Внесение данных в Access с помощью VB.NET

Сообщение krukovis84 » 07.10.2009 (Ср) 10:57

В коде пока разобраться не могу... знаний не хватает.
На VB 6 я бы делал это примерно так:
1.
Код: Выделить всё

'C помощью Adodc создал бы соединение
With adodcSettings
        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Agent_DB_2000.mdb;Persist Security Info=False"
        .CommandType = adCmdText
        .RecordSource = "SELECT tab_Settings.Agent_ID, tab_Agent.Agent_Name,tab_Agent.Agent_Kod, tab_Settings.SK_ID, tab_SK.SK_Name FROM tab_SK INNER JOIN (tab_Agent INNER JOIN tab_Settings ON tab_Agent.Agent_ID = tab_Settings.Agent_ID) ON tab_SK.SK_ID = tab_Settings.SK_ID"
        .Refresh
    End With
' С помощью стандартных операторов стал бы присваивать значения полям из запроса
    adodcSettings.RecordSet.AddNew
    adodcSettings.Recordset.Fields("SK_ID").Value = lblReportID(0).Caption   'ID страховой
    adodcSettings.Recordset.Fields("SK_Name").Value = lblReport(0).Caption   'Имя страховой
   .... и так далее всем остальным полям
   adodcSettings.RecordSet.Update


Подскажите плиз как это же самое сделать в VB.NET.

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

Re: Внесение данных в Access с помощью VB.NET

Сообщение Roman Koff » 07.10.2009 (Ср) 11:24

Впринципе подход не изменился, только объекты юзаются более активно. Поставщик все тотже - Provider=Microsoft.Jet.OLEDB.4.0;Data Source=...
Для работы с таблицей (запросом) можно юзать Public DataReader As OleDbDataReader
Покопайся в мсдн, там есть примеры как записать чтонить в базу.

Лови рабочий пример чтения, на его основе проще будет разобраться ...
Вложения
Stands_0.rar
(308 Кб) Скачиваний: 160
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

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

Re: Внесение данных в Access с помощью VB.NET

Сообщение krukovis84 » 07.10.2009 (Ср) 15:01

Приложенный пример точно на VB.NET написан?
Копаюсь в MSDN... пока что конкретно делать - не понял.

Dmitry81
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 52
Зарегистрирован: 20.06.2009 (Сб) 0:43
Откуда: Украина, Запорожье

Re: Внесение данных в Access с помощью VB.NET

Сообщение Dmitry81 » 07.10.2009 (Ср) 15:22

http://bit.pirit.info/forum/viewtopic.php?t=9571
Тут пример достаточно неплохой.
А вот тут литературка неплохая, и не только по этому вопросу:http://bitrc.ifolder.ru/14337986
А.Эйнштейн: Есть две бесконечные вещи - вселенная и человеческая глупость. Хотя, насчет вселенной я сомневаюсь...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Внесение данных в Access с помощью VB.NET

Сообщение Andrey Fedorov » 08.10.2009 (Чт) 8:57

krukovis84 писал(а):На VB 6 я бы делал это примерно так:
...


Кстати, ADO и в NET работает точно так же - его никто не отменял, так что Recordset и Connection никуда не делись.
Хотя, по хорошему, надо привыкать к ADONET...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Re: Внесение данных в Access с помощью VB.NET

Сообщение krukovis84 » 08.10.2009 (Чт) 22:14

Dmitry81 писал(а):http://bit.pirit.info/forum/viewtopic.php?t=9571
Тут пример достаточно неплохой.
А вот тут литературка неплохая, и не только по этому вопросу:http://bitrc.ifolder.ru/14337986


Спасибо! Буду разбираться.


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 78

    TopList