Krishna Saxena
Krishna Saxena

Reputation: 47

Adding data in vb.net application does not change ms access database file

I am creating a library software. I have connected an access database with my vb application. In "Add book form", whenever i add a book in there, it shows in datagridview below it but as i restart the application, i find that data is gone as saving data through form is not affecting my database file. Here is the code:

Public Class addForm
    Private Sub BooksBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs)
        Me.Validate()
        Me.BooksBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.DataDataSet)

    End Sub

    Private Sub BooksBindingNavigatorSaveItem_Click_1(sender As Object, e As EventArgs) Handles BooksBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.BooksBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.DataDataSet)

    End Sub

    Private Sub addForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'DataDataSet.Books' table. You can move, or remove it, as needed.
        Me.BooksTableAdapter.Fill(Me.DataDataSet.Books)
    End Sub

    Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
        Try
            BooksBindingSource.EndEdit()
            BooksTableAdapter.Update(Me.DataDataSet.Books)
            MessageBox.Show("Book added successfully")
        Catch ex As Exception
            MessageBox.Show("Error")
        End Try
    End Sub
End Class

Name of my table is "Books". And also it shows "Book added successfully" after clicking on add btn.

Upvotes: 0

Views: 53

Answers (1)

Caius Jard
Caius Jard

Reputation: 74660

Here is a screenshot of the folder structure of one of my projects that uses an access db:

enter image description here

Circled in BLUE is the accessdb that I added to the project. This is the DB file I see in Solution Explorer

Circled in RED is a copy of the blue DB; it is copied to the bin\Debug folder every time I run a build (start the app)


The program runs from the bin\Debug folder (or release if you're using that build configuration) and it saves its data in the RED database

This means every time my program saves a change to the DB, the build process will overwrite the red DB with a fresh copy of the blue DB, next time the build process runs

So, every time I start the app, previous modified database is overwritten with a blank one


I can change this behavior if I click on the blue DB in solution explorer:

enter image description here

  • Copy always - always overwrites red db with blue db
  • Copy if newer - copy means db have same date, then your program edits red DB so it is newer, build process doesn't overwrite it.. If you make a change to the blue DB (add a table etc) then blue DB is newer, build will overwrite red db. This is a good setting to use
  • Copy never - you must manually copy the db

VS probably gave some info about this when you first added the DB, but the dialog it shows up is wordy and boring, so most people don't read it or don't really get what it's talking about even if they do read it:

enter image description here

Clicking Yes eventually causes you to ask a question like this on SO :) - no bad thing, but I do wish MS had made "Copy if Newer" the default..


Other notes about your code:

  • The topmost Sub BooksBindingNavigatorSaveItem_Click) is redundant - remove it

  • The btnAdd_Click method is nearly an identical re-statement of BooksBindingNavigatorSaveItem_Click_1 and is hence probably redundant - it should be removed. If you have two buttons intended to save data, put the save code into a sub and call it from both button click handlers; don't repeat yourself

Upvotes: 1

Related Questions