vb.netsdflocal-database

VB.NET - Local database (SQL Server Compact 3.5 database) data gone after update?


I have created an application in VB.NET (using Microsoft Visual Basic 2010 Express) with a local database (SQL Server Compact 3.5 database) to store data.

I have installed this on the users computer, and added a "search online for updates" functionallity (which can be selected when publishing)

Now i have noticed, that sometimes when i upload a new version, the data from the database gets cleared. (possibly when i opened the dtb while developing)

This is offcourse not how i want the system to behave, and the data should always remain on the users computer.

In 'Application Files' the database file (*.sdf) is currently set to 'Data File (Auto)', but i'm unsure of the exact way this works.

Could anyone help me to understand how all of this works, and tell me how i can be sure that the data in the users database will remain, even after an update? If there is no solution to ensure this, is there a way to safely backup the data and reload it?

Thanks in advance!!


Solution

  • Basically, the click one install overwrites everything in the program folder that is included in your publish. So if you include the .sdf then it will overwrite it when the installer is executed. What you need to do is select "exclude" on the sdf instead. This will keep the database in its previous state.

    So my recommendation would be to have 2 different publishes. One that you create that contains the .sdf which is only used on first time installation, and then in all the update ones you exclude it.

    To perform updates on your tables you would have to write the SQL for it in your software. Basically do a check on all tables to see that they have the proper setup on startup. If they don't then you add the missing columns.

    Hope this helps.