0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64

Как полностью закрыть свою БД SQLite?

13.07.2024, 07:38. Показов 2749. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
По идее после этого БД в программе должна быть закрыта, но доступ к самому файлу БД остаётся и я его не могу удалить, пока не закрою программу. Что нужно прописать в коде, чтобы можно было удалить файл БД, не закрывая программу?

C#
1
2
3
4
using (var connection = new SqliteConnection(connect))
{
    connection.Open();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.07.2024, 07:38
Ответы с готовыми решениями:

Как из потока закрыть свою программу?
Всем привет! Столкнулся со странной проблемой. После запуска потока, не срабатывает Form1.Close; Делаю так: Добавляю к проекту...

Как полностью закрыть приложение?
в программе есть две формы, одну из которых я скрываю(Hide()). если запускаю с .exe, то при закрытии прога висит в процессах. что я делаю...

Как закрыть приложение полностью
Всем привет. Ситуация такая: Существует в проекте форма Main с 16-ю Label. Далее программно создаем массив форм Room(16), но не...

34
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64
16.07.2024, 09:06  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Rius Посмотреть сообщение
Зачем это браузеру - понятно. А зачем это вам - нет.
Ну и зачем это Браузеру?

Добавлено через 37 секунд
Цитата Сообщение от Rius Посмотреть сообщение
чтобы можно было удалить файл БД,
Удалить или редакторовать.
0
Эксперт .NET
 Аватар для Rius
13685 / 7865 / 1702
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
16.07.2024, 09:11
Цитата Сообщение от ruccih Посмотреть сообщение
Ну и зачем это Браузеру?
Чтобы вам , как юзеру, было удобнее отлаживать работу с БД, для чего эти утилиты и предназначены.
Им положено не мешать, по возможности, работе основной программы, к которой принадлежит бд.
0
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64
16.07.2024, 09:16  [ТС]
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Там используются нормальные взрослые СУБД, которые позволяют создавать тысячи соединений одноментно.
SQLite ничем не хуже "нормальных и взрослых" БД. Под мои задачи они не подходят. У меня был конкретный вопрос - получить доступ к файл БД, не закрывая свою программу. В DB Browser SQLite решили это задачу. Здесь, к сожалению, не знают как это сделать... Буду дальше искать решение. Всем спасибо за советы.

Добавлено через 1 минуту
Цитата Сообщение от sonmax Посмотреть сообщение
GC.Collect();                                //эти 2 строчки полностью "убивают" соединение.
      GC.WaitForPendingFinalizers();
К сожалению, не действует. Файл БД не удаляется и не редактируется из другой программы.
0
Эксперт .NET
 Аватар для Rius
13685 / 7865 / 1702
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
16.07.2024, 09:17
Цитата Сообщение от ruccih Посмотреть сообщение
SQLite ничем не хуже "нормальных и взрослых" БД.
Не лучше и не хуже, но ДРУГОЙ. Он однопользовательский.

Цитата Сообщение от ruccih Посмотреть сообщение
Здесь, к сожалению, не знают как это сделать...
Ага, в 16 посте пример в фотошопе нарисован.
Миниатюры
Как полностью закрыть свою БД SQLite?  
0
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64
16.07.2024, 09:18  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Чтобы вам , как юзеру, было удобнее отлаживать работу с БД, для чего эти утилиты и предназначены.
Им положено не мешать, по возможности, работе основной программы, к которой принадлежит бд.
Они что хотят, то и делают, потому что знают как это сделать. Если бы я знал как, то и сам бы сделал.
0
Эксперт .NET
 Аватар для Rius
13685 / 7865 / 1702
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
16.07.2024, 09:19
Допустим, вы узнаете, как.
Вы понимаете, что использование однопользовательской встраиваемой бд для целей , которые обычно выполняются клиент-серверными бд, принесёт проблемы? Вы не побежите потом на форум со "спасити-помогити-всё-тормозит!!!!" ?
0
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64
16.07.2024, 09:25  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Не лучше и не хуже, но ДРУГОЙ. Он однопользовательский.
Программа DB Browser SQLite доказала, что эту базу можно сделать многопользовательской.

Добавлено через 43 секунды
Цитата Сообщение от Rius Посмотреть сообщение
Допустим, вы узнаете, как.
Вы понимаете, что использование однопользовательской встраиваемой бд для целей , которые обычно выполняются клиент-серверными бд, принесёт проблемы? Вы не побежите потом на форум со "спасити-помогити-всё-тормозит!!!!" ?
Ну это уже мои проблемы.

Добавлено через 3 минуты
Цитата Сообщение от Rius Посмотреть сообщение
Ага, в 16 посте пример в фотошопе нарисован.
Я делаю всё тоже, что и в вашем коде, кроме цикла. Доступа к файлу нет.
0
Эксперт .NET
 Аватар для Rius
13685 / 7865 / 1702
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
16.07.2024, 09:26
Ну, ок.
Пеняйте на себя.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System.Data;
using System.Data.SQLite;
using System.Xml.Linq;
 
namespace ConsoleAppSqlite
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var id = Guid.NewGuid();
            Console.WriteLine(id);
 
            var file = "R:\\demo.sqlite";
            using var connection = new SQLiteConnection($"Data Source={file};PRAGMA journal_mode=WAL;");
            connection.Open();
 
            using var command = new SQLiteCommand("insert into demo (value) values (@value);", connection);
            var parameter = command.Parameters.Add("value", DbType.String);
 
            var end = DateTime.Now.AddMinutes(1);
 
            while (DateTime.Now < end)
            {
                parameter.Value = $"{id} - {DateTime.Now:HH:mm:ss.ffff}";
                command.ExecuteNonQuery();
 
                Thread.Sleep(500);
            }
        }
    }
}
Вложения
Тип файла: 7z demo.7z (377 байт, 0 просмотров)
0
 Аватар для Andrey-MSK
3390 / 2276 / 388
Регистрация: 14.08.2018
Сообщений: 7,696
Записей в блоге: 4
16.07.2024, 09:33
Цитата Сообщение от ruccih Посмотреть сообщение
Программа DB Browser SQLite доказала, что эту базу можно сделать многопользовательской.
Да ладно Это локальная однопользовательская СУБД, которая распространяется одной DLL в приложении, которое ей пользуется!!!
Надо разработчикам SQLite сказать что их документация полное фуфло и её можно использовать как обычную многопользовательскую СУБД...
SQLite is an embedded SQL database engine. Unlike most other SQL databases, SQLite does not have a separate server process. SQLite reads and writes directly to ordinary disk files.
0
Эксперт .NET
 Аватар для Rius
13685 / 7865 / 1702
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
16.07.2024, 09:34
Ждём следующих вопросов на форуме о том, что всё глючит и тормозит, и как это исправить...
1
0 / 0 / 0
Регистрация: 05.07.2011
Сообщений: 209
16.07.2024, 10:29
Цитата Сообщение от ruccih Посмотреть сообщение
К сожалению, не действует. Файл БД не удаляется и не редактируется из другой программы.
Этот код освобождает ресурсы в своей же программе. если же базу "держит" сторонняя прога,
то никакой код внутри программы корректно это не освободит, наверное надо только процесс убивать.
что тоже не есть хорошо.
Если одновременно работать и администрировать базу вот прям необходимо, то
тогда писать свой модуль администрирования и вставлять в свою же программу.
в этом случае будет полный доступ к базе.

Но коллеги вам правильно все расписали, sqlite это база для одного пользователя.
0
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64
16.07.2024, 20:01  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Пеняйте на себя
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using System.Data;
using System.Data.SQLite;
using System.Xml.Linq;
 
namespace ConsoleAppSqlite
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var id = Guid.NewGuid();
            Console.WriteLine(id);
 
            var file = "R:\\demo.sqlite";
            using var connection = new SQLiteConnection($"Data Source={file};PRAGMA journal_mode=WAL;");
            connection.Open();
 
            using var command = new SQLiteCommand("insert into demo (value) values (@value);", connection);
            var parameter = command.Parameters.Add("value", DbType.String);
 
            var end = DateTime.Now.AddMinutes(1);
 
            while (DateTime.Now < end)
            {
                parameter.Value = $"{id} - {DateTime.Now:HH:mm:ss.ffff}";
                command.ExecuteNonQuery();
 
                Thread.Sleep(500);
            }
        }
    }
}
Не понимаю, где здесь прекращается доступ к файлу БД?
0
Эксперт .NET
 Аватар для Rius
13685 / 7865 / 1702
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
16.07.2024, 20:03
Здесь не прекращается доступ, здесь разрешается одновременный доступ из разных программ к одному файлу бд.
1
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64
16.07.2024, 20:11  [ТС]
Цитата Сообщение от ruccih Посмотреть сообщение
PRAGMA journal_mode=WAL;
Спасибо, попробую.
0
Эксперт .NET
 Аватар для Rius
13685 / 7865 / 1702
Регистрация: 25.05.2015
Сообщений: 23,885
Записей в блоге: 14
20.09.2024, 20:42
Понадобилось-таки мне прекратить доступ.
Через файл формата sqlite данные передаются и после прочтения его надо съесть удалить.
В строку подключения добавил Pooling=false .
Ещё, говорят, есть SqliteConnection.ClearAllPools().

Microsoft.Data.Sqlite 6.0 / Connection Pooling
SQLite is a little bit different since database access is typically just accessing a file. This means opening a connection to a SQLite database is usually very fast. However, this is not always the case. For example, opening a connection to an encrypted database can be very slow. Therefore, SQLite connections are now pooled when using Microsoft.Data.Sqlite 6.0.
SqliteConnection.Dispose does not release .db file on Windows (6.0 rc1 ->)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2024, 20:42

Как закрыть полностью сайт?
Здравствуйте. Подскажите как полностью закрыть сайт от незарегистрированных пользователей. То есть чтобы просто выводило форму...

Как полностью закрыть приложение?
Как полностью закрыть приложение? У меня он закрывается, но продолжает висеть в процессах и при следующем запуске приложения выдается ошибка

Как полностью закрыть от ЯКЗР?
Как полностью закрыть сайт от ЯКЗР и Мейла но при этом не навредить ботам Гугла и Рамблера?

Как полностью закрыть приложение?
Установил официальное приложение Вконтакта на планшет. Уведомления о новых сообщениях приходят даже если приложение закрыто. В диспетчере...

Как полностью закрыть cppwebbrowser?
После работы cppwebbrowser'a программа ест примерно 80-100 озу. Как я могу закрыть браузер, не закрывая программы? Браузер сидит в памяти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Опции темы

Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru