Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.10.2022
Сообщений: 64

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

13.07.2024, 07:38. Показов 2696. Ответов 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
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 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
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 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
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 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
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 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
3375 / 2261 / 388
Регистрация: 14.08.2018
Сообщений: 7,666
Записей в блоге: 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
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 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
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 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
13377 / 7832 / 1695
Регистрация: 25.05.2015
Сообщений: 23,833
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru