Carlos Hernandez Perez
Carlos Hernandez Perez

Reputation: 331

Can't open database using SQLite on an UWP written in C++

I am making an UWP in which I need to access a database. To do so I first downloaded and installed the SQL Universal Windows Platform from this link:

https://sqlite.org/download.html

After this was done I added it as a reference and included it in my code with:

#include <sqlite3.h> //Not sure if I need to make any other changes for this to work

To troubleshoot I have just a button and a textbox. This is the code that it's been run when the button is clicked:

    int rc;
    sqlite3 *testDB;

    if (SQLITE_OK == (rc = sqlite3_open("signers.db", &testDB))) { 
        Message->Text = "It worked!";
    }
    else {
        Message->Text = "Can't open Database";
    }

signers.db it's a database that I created using SQLite so I could have some data to read from my program. Everytime I run the program the text "Can't open Database" appears. I've tried every solution that I see online but none seem to work for me thus I think that I overseeing something. I am fairly new at UWP and also at using databases.

If you need any additional information feel free to ask for it.

Upvotes: 0

Views: 921

Answers (2)

Peter Torr
Peter Torr

Reputation: 12019

If you have the database in your package folder, then it is read-only. You need to use sqlite3_open_v2 and pass the SQLITE_OPEN_READONLY flag.

If you want to open the database for read / write then you need to copy it to your local folder first.

(Also make sure you actually have the database set to deploy; in the Properties window make sure it is set to Content and that it will be copied to the output directory).

Upvotes: 1

skeller
skeller

Reputation: 1161

According to

https://learn.microsoft.com/en-us/windows/uwp/files/file-access-permissions

you have some limitations to the location where the db file you want to open is located. sqlite itself should work. Try opening a db in a folder specified in the article.

Could also be just a corrupted db file. Did you try to create an empty one?

Upvotes: 1

Related Questions