Сохранение данных в access не работает, несмотря на отсутствие ошибок

#vb.net

#vb.net

Вопрос:

Привет, я пытаюсь использовать этот код для сохранения в моей базе данных Access, и хотя ошибок нет, и в нем говорится, что данные сохранены, моя база данных access не получает новые данные. Что с этим не так?

 Private Sub savenew()
        Dim conn As New OleDbConnection
        conn = New OleDbConnection
        dbprovider = "Provider=Microsoft.ACE.OLEDB.12.0;"
        dbsource = "Data Source = FULL YUGIOH ACCESS DATABASE.accdb;"
        conn.ConnectionString = dbprovider amp; dbsource
        Dim reader As OleDbDataReader
        Dim command As OleDbCommand

        Try
            conn.Open()
            Dim query As String
            query = "insert into item(name) values ('" amp; TextBox4.Text amp; "')"
            command = New OleDbCommand(query, conn)
            reader = command.ExecuteReader
            MsgBox("data saved")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub
  

(таблица в моей базе данных называется item, а столбец называется name.)

Комментарии:

1.OleDbCommand.ExecuteNonQueryOleDbCommand.Параметры.

2. Снова привет, Джими! Куда мне поместить каждый из них?

3. Dim query As String = "insert into [item] ([name]) values (@NameValue)" command.Parameters.Add("@NameValue", OleDbType.VarChar).Value = TextBox4.Text command.ExecuteNonQuery() . И соединение, и команда должны быть удалены или объявлены в Using блоке. В качестве примечания, оба item и name действительно являются плохим выбором в качестве имен таблиц / полей. Вы должны переименовать их.

4. Джими, это сработало, спасибо!!! Я обнаружил, что каким-то образом мой источник данных должен был быть жестко запрограммирован. Поскольку вы здесь, не могли бы вы знать путь к файлу, который будет работать для каждого компьютера, поскольку мой работает только с моим (моя база данных хранится в файле проекта с exe, который запускает код.)

5. Dim databasePath = Path.Combine(Application.StatupPath, "FULL YUGIOH ACCESS DATABASE.accdb"). Dim dbprovider as String = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={databasePath};Persist Security Info=false;" . Соединения также могут храниться в файле конфигурации, но с файлом Access DB этого достаточно.