在2个程序中访问SQLite文件时,请避免使用System.IO.IOException异常

时间:2017-11-08 03:40:44

标签: c# sqlite

我正在向c#程序1写一个服务,另一个是GUI应用程序来监视服务中的活动。在$scope.selectedShift中打开文件后,我不知道这是否只是一个Windows的事情当我尝试在我的服务中打开文件时,我得到以下异常;

DB Browser for SQLite

在我的应用程序中首先打开文件然后在System.IO.IOException: 'The process cannot access the file '...\database.db' because it is being used by another process.' 程序中,它可以正常工作,我可以看到正在创建的表和记录。所以我想知道是否有一种方法可以通过使用开放标志来避免我的代码中的此异常。我正在使用c#库praeclarum/sqlite-net(SQLite-net PCL)

我的代码看起来像这样打开文件;

DB Browser for SQLite

我看到有另一个重载接受openFlag;

class SQLiteDb
    {
        private string databaseDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AttorneyScraper");
        private string databasePath;
        public SQLiteAsyncConnection db;

        public SQLiteDb()
        {
            databasePath = Path.Combine(databaseDirectory, "database.db");
            if (!Directory.Exists(databaseDirectory))
            {
                Directory.CreateDirectory(databaseDirectory);
            }
            System.Data.SQLite.SQLiteConnection.CreateFile(databasePath);
            db = new SQLiteAsyncConnection(databasePath);
            ...

这个public SQLiteAsyncConnection(string databasePath, SQLiteOpenFlags openFlags, bool storeDateTimeAsTicks = true); 枚举看起来像这样;

SQLiteOpenFlags

我知道SQLite允许从研究中访问2个程序中的文件。

0 个答案:

没有答案