C# .net -> SQLite error: Unable to open the database file - c#

I'm getting "System.Data.SQLite.SQLiteException: Unable to open the database file." when I attempt to access the database to save a record upon the "first" opening of my program.
Here's the thing, it works fine when debugging locally in Visual Studio, but stops working when I package the program in an installer, and then install the program somewhere.
I was guessing that it was the location of the database, which I just have set at database.s3db without a path, because it is stored next to the program's exe, but how could that cause problems?
I'm at a loss, any further ideas or suggestions for solving this problem would be greatly appreciated.

Maybe you are installing the program in a folder which the user doesn't have write permissions so cannot modify the database file.

Please update your DataSource Format like this :
#"C:\Users\Mehmeto\Documents\Visual Studio 2015\Projects\......\bin\myDB.sqlite";
Where the directory points to where your project is located.

Related

Visual Studio 2017 error Cannot open "X" for writing - access to path is denied

I'm sorry I cannot seem to fix this error:
Severity Code Description Project File Line Suppression State
Error CS2012 Cannot open
'C:\Users\Usuario\source\repos\WindowsFormsApp1\WindowsFormsApp1\obj\Debug\WindowsFormsApp1.exe'
for writing -- 'Access to the path
'C:\Users\Usuario\source\repos\WindowsFormsApp1\WindowsFormsApp1\obj\Debug\WindowsFormsApp1.exe'
is
denied.' WindowsFormsApp1 C:\Users\Usuario\source\repos\WindowsFormsApp1\WindowsFormsApp1\CSC 1 Active
I suppose it has something to do with the file being read only? I tried changing it and it reverts to read only, I tried closing and reopening VS, I tried running it as an administrator, I changed the assembly name and default namespace and now it won't even run the debugger
I'm new to C#, I used to do Java and never had an error like this one, sorry if it's something very simple. By the way I'm using Windows 10 with Bitdefender installed
Had the same problem and fixed it with deleting obj directory.
Hope it helps :)
This issue occurs because the dll file is open some where, suppose you try to delete the dll file from obj folder then also message appears that "The file is open in another program."
In my case, I close all VS instance and copy the root folder and paste it into another folder then open my solution in VS it works fine.
I have ran into this issue on a few occasions. It seems the best way to fix this is to close down everything and restart your computer. It seems there is a lock on a file within the bin folder of the project and the best/only way I found so far to get around this issue is to restart your computer.
I could solve this restoring the .exe from the Quarantine zone in the Avira Antivirus, restarting the computer and turning off the real time protection in Avira, after these steps I could compile the project again.

C# - OleDb Exception while running published .exe

I'm working on a C# project. While running it in VS2013, it shows no error. I'm using MS Access 2010. But after publishing the project, clicking any button that involves database process, .exe application shows OleDbException.
OleDbException : Use updateable query.
But it works perfectly on VS2013.
My Connection String : Provider=Microsoft.Jet.OLEDB.4.0;Datasource=|DataDirectory|\\Resources\\GreenTrends.mdb;Persist Security Info=True
Thanks in advance!
Make sure that the user running the process has appropiate read/write permissions to the database file. The error message as such can be a bit misleading since its often missing permissions causing the error. For more information please refer to this SO answer

How do I publish an Access database with my C# application using Visual Studio?

I'm trying to figure out how to publish an application I wrote. We didn't get to publishing in class, and my programming teacher is having some health issues and isn't available right now.
I found the "Publish" option, and can get it to create a folder with an install program... but I open it, and it just opens the program, and spams me infinitely, complaining that my Access database (located in the bin > debug in the build stage) can't be accessed (from some weird path I don't recognize). I tried using WiX, but it gave me an error when I tried to install, saying it doesn't have access to the install folder (running as admin). I've been googling for a few hours, poking at it, exploring, and I'm not getting too far. Can anyone ELI5?
When you use the "publish" option for desktop apps, VS creates a click-once installer that will place all the files it knows about in the appropriate locations.
Unfortunately, it can't guess which other files your application needs so you need to tell it explicitly.
If you right-click the Project->Properties, go to the Publish tab and click the "Application Files" button, you'll see all files that will be added to the installer.
Next, click "Show all files" at the bottom. Find your database, and change the Publish Status to "Data File".
Note that I've only ever used the Click Once installer to install static files (like images/documentation) that are never modified, only replaced in later releases. I'm not sure whether your (modified) db will be preserved during an update but I suspect not.
If the Click Once install process is too simple for your needs, VS2010 has "Setup Projects" which create more complex installers that support logic/code. For VS2012, the commonly suggested option is Wix. Unfortunately, it's got a steep learning curve but it can do pretty much anything you need.
I believe VS2013 and later have setup projects again through an extension but I haven't tried it myself.
Edit:
The easiest way around this is likely to set the connection string programatically based on where the application is executing from.
Note that as per this answer clickonce apps are usually executed from deep inside the user profile directory (also read the answer below about data directories). It's a side-effect of how ClickOnce works (it wants to install somewhere the user is guaranteed to have write access).
Check if there really is an .mdb in that folder. If not, you need to tweak the installer or the properties for the .mdb. Assuming it's in the same location as the executable, you can tell your application where to find it...
string dbPath = IO.Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
"access.mdb");
string connectionString = String.Format(
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}",
dbPath);
I'm not sure why you think the database file added by the installer is in a directory directly under C:\. It's possible you're not looking at the file created by the installer.
To avoid confusion, try changing the name from access.mdb to something else (temp.mdb?), build the installer, rename back to access.mdb. Now, when you've installed the application, make sure the file you're looking at is now called temp.mdb. If not, you're looking at the wrong file.
This Link Has Full demonstration of Database Connectivity And Publish a C# application with database. The application is also running on another machines.
How to Publish C# Application with access database

VS 2005 restarting when building project solution? How to resolve it?

I getting one issue in vs2005 website project solution. When I start build my vs2005 project in some time vs2005 shows error:- "Microsoft Visual studio has encountered a problem and needs to close".
every time restart visual studio when I started built solution.
How can I get rides from this error?
Any solution.
Error Message from Event Viewer:
for privacy I changed my project name with dummy
It showing message: Windows cannot access the file D:\MyProject\Bin\MyLib.pdb for one of the following reasons: there is a problem with the network connection, the disk that the file is stored on, or the storage drivers installed on this computer; or the disk is missing. Windows closed the program Microsoft Visual Studio 2005 because of this error.
Program: Microsoft Visual Studio 2005
File: D:\MyProject\Bin\MyLib.pdb
The error value is listed in the Additional Data section.
User Action
1. Open the file again. This situation might be a temporary problem that corrects itself when the program runs again.
2. If the file still cannot be accessed and
- It is on the network, your network administrator should verify that there is not a problem with the network and that the server can be contacted.
- It is on a removable disk, for example, a floppy disk or CD-ROM, verify that the disk is fully inserted into the computer.
3. Check and repair the file system by running CHKDSK. To run CHKDSK, click Start, click Run, type CMD, and then click OK. At the command prompt, type CHKDSK /F, and then press ENTER.
4. If the problem persists, restore the file from a backup copy.
5. Determine whether other files on the same disk can be opened. If not, the disk might be damaged. If it is a hard disk, contact your administrator or computer hardware vendor for further assistance.
Additional Data
Error value: C000009C
Disk type: 3
There was a problem due to the .pdb file.. It getting me issue.
When I Deleted and Re-Insert (D:\MyProject\Bin\MyLib.pdb) Class Library File(.pdb) into my Web Solution, then It worked.
I resolved Issued by delete and Re-Insert file from class library to the web application then Build/Re-Build Solution...
Its Resolved my Issue.
Thanks

Trying to launch a Visual Studio C# program from inside another one

I am having great difficulty getting a Windows program, written in VS 2008 C#, to launch another type program. I've put a main program to offer you the ability to launch some other VS 2008 C# programs. When one of them is selected the following code is intended to do the launch:
System.Diagnostics.Process.Start(#"C:\Documents and Settings\rat\My Documents\Visual Studio 2008\Projects\PV_002_082708\PV_001\PV_001\bin\Debug\PV.exe");
It works, but each user will have a different path. The path shown is for my computer. The code would have to know where each persons program was installed! In the past, I could easily call a program that was in the C:\Program Files location because that's where the MS Package & Deployment program put the programs. VS 2008/2010 doesn't put them there!
I'm sure I am not knowledgeable about Visual Studio 2008/2010 to know if there is a way around this, so any help would be greatly appreciated.
System.Diagnostics.Process.Start(System.Io.Path.Combine(System.Windows.Forms.Application.StartupPath, "PV.exe"));
assuming that the program is in the launched application's path.
or...
System.Diagnostics.Process.Start(System.Io.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments), #"Visual Studio 2008\Projects\PV_002_082708\PV_001\PV_001\bin\Debug\PV.exe"));
assuming you want to open the project from it's place.
Once you create the installation package you can set the install path to some fixed path that users will not be able to change and than use that from your code (not very user friendly but it would work) or insert the user chosen path value into the registry and get it from there instead.
May want to have a look at this thread. How-to as well as lots of pro's and cons.
Embedded a *.exe into a dll
If you see the first answer to his question, I think this would work for you.
Simply he is saying, you add a resource file to your project, then when the user runes your program, it extracts your exe file that you added as a resource file to somewhere you know on the end users maching.

Categories