Вверх ↑
Этот топик читают: Гость
Ответов: 952
Рейтинг: 4
#1576: 2018-11-06 23:10:53 ЛС | профиль | цитата
Правильно ли перед каждым запросом к БД открывать БД, а после выполнения запроса и получения результата - закрывать БД?
Подозреваю, что у меня не совсем правильно всё сделано. БД я открываю при запуске проги, и в дальнейшем команду на её закрытие не даю.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1577: 2018-11-06 23:49:12 ЛС | профиль | цитата
user_asm писал(а):
Подозреваю, что у меня не совсем правильно всё сделано.
И чем вызваны твои подозрения ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#1578: 2018-11-07 00:37:51 ЛС | профиль | цитата
Пока не знаю. Мелькало несколько раз в этой теме про закрытие. Но там не было приложенных схем, поэтому не разобрался, что имелось в виду, и как это лучше реализовать если действительно надо.
Моя программа может быть запущена у порядка 10-15 человек одновременно. Вроде пока проблем не было.
Кстати, после перевода в UTF8 размер файла БД увеличился примерно в 2 раза. Это нормально?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1579: 2018-11-07 08:10:24 ЛС | профиль | цитата
user_asm писал(а):
Вроде пока проблем не было.
Основной закон механика: РАБОТАЕТ - НЕ ТРОГАЙ!
user_asm писал(а):
после перевода в UTF8 размер файла БД увеличился примерно в 2 раза.
Это нормально.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 197
Рейтинг: 2
#1580: 2018-12-01 00:29:09 ЛС | профиль | цитата
Вероятно это уже обжёвывали, но чет на форуме не нашел. в интерне полно ответов не то что нужно либо фраза оно не поддерживается.
Так вот проблема в следующем мне нужно удалить столбец находящийся в середине в таблице в базе sqlite.
Мне нужно сделать это sql запросами. дело в том что sql менеджер это может делать НО КАК? хотя везде пишут что невозможно!!!
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1581: 2018-12-01 09:54:29 ЛС | профиль | цитата
zhorik5,
Есть таблица tab с колонками A,B,C,D,E.
Нужно удалить колонку С

-- Отключаем внешние ключи, если они включены.
PRAGMA foreign_keys=off;
-- Запускаем транзакцию командой BEGIN TRANSACTION
BEGIN TRANSACTION;
-- Изменяем имя существующей таблицы на любое другое.
ALTER TABLE tab RENAME TO tab_old;
-- Создаем новую таблицу с аналогичной, подобной, похожей структурой и даем столбцам нужные описания.
CREATE TABLE tab (
id INTEGER,
name TEXT,
age text,
addres Text
);
-- Добавляем данные в новую таблицу из старой при помощи команды INSERT с подзапросом SELECT.
INSERT INTO tab (id, name, age, address) SELECT a, b, d, e FROM tab_old;
-- Завершаем транзакцию командой COMMIT
COMMIT;
-- Удаляем старую таблицу
DROP TABLE tab_old;
-- И затем опять включаем поддержку внешних ключей.
PRAGMA foreign_keys=on;
|
--- Добавлено в 2018-12-01 09:59:18

zhorik5 писал(а):
sql менеджер это может делать
Ну и сделай Sql менеджером.

Редактировалось 1 раз(а), последний 2018-12-01 09:59:18
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#1582: 2018-12-31 20:48:31 ЛС | профиль | цитата
Исполнитель сменил фамилию, соответственно требуется во всей БД её поменять.
Как лучше сделать?
UPDATE note SET fioisp=REPLACE(fioisp,'Иванов','Петров')
или
UPDATE note SET fioisp='Петров' WHERE fioisp='Иванов'
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1583: 2018-12-31 21:48:05 ЛС | профиль | цитата
UPDATE note SET fioisp="Петров" WHERE fioisp="Иванов";
Если у тебя нет других Ивановых

Редактировалось 3 раз(а), последний 2019-01-01 11:03:34
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 7
#1584: 2019-01-03 20:03:57 ЛС | профиль | цитата
Если создать базу в памяти :memory:, то можно ли с ней работать напрямую из другой программы на том же компьютере? Как к ней добраться? Или только клиент-сервер прикручивать приложениям?
карма: 0

0
Ответов: 952
Рейтинг: 4
#1585: 2019-02-12 22:19:14 ЛС | профиль | цитата
Есть таблица
CREATE TABLE tab (
id INTEGER,
gruppa TEXT,
fio1 TEXT,
fio2 TEXT,
fio3 TEXT
);
Есть возможность объединить данные из ячеек fio1, fio2, fio3 и поместить в ячейку fio1 ? Или для этого надо будет перекроить всю БД ?
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1586: 2019-02-12 23:49:09 ЛС | профиль | цитата
user_asm, пора научиться ставить задачу.

Редактировалось 2 раз(а), последний 2019-02-12 23:55:42
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#1587: 2019-02-13 10:43:20 ЛС | профиль | цитата
Имеем запись в таблице где:
fio1 Иванов Т.С.
fio2 Соколов И.П.
fio3 Лысаков П.С.
а хочу получить
fio1 Иванов Т.С., Соколов И.П., Лысаков П.С.
fio2 Соколов И.П.
fio3 Лысаков П.С.
Структуру таблицы оставить при этом ту же.
CREATE TABLE tab (
id INTEGER,
gruppa TEXT,
fio1 TEXT,
fio2 TEXT,
fio3 TEXT
);
Не удалять столбцы.

Нашел функции CONCAT и || но не уразумел возможно ли с помощью них это реализовать...

Редактировалось 1 раз(а), последний 2019-02-13 10:48:13
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1588: 2019-02-13 14:53:34 ЛС | профиль | цитата
Завтра Лысаков П.С. рассчитался и уехал на Сахалин...
Что будешь делать ?

user_asm писал(а):
CREATE TABLE tab (
id INTEGER,
gruppa TEXT,
fio1 TEXT,
fio2 TEXT,
fio3 TEXT
);
Почему по 3? А если в группе 2, 4 или 10 человек ?
Что Батько сказал: "Больше трёх не собираться" или в обед легче разливать на троих?
Посмотри как компоненты объединены в группы в HiAsm.

Редактировалось 1 раз(а), последний 2019-02-13 21:04:04
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#1589: 2019-02-13 21:24:46 ЛС | профиль | цитата
Да мне без разницы куда он уедет. Суть в том что сейчас фамилии раскиданы в 3 ячейки. В каждой ячейке по 1 фамилии.
Я хочу объединить имеющиеся уже в БД данные в одну ячейку и уже дальше вести БД таким образом, что бы в новых записях нужные фамилии кидать именно в эту 1 ячейку. Что бы там было хоть 3, хоть 5, хоть 15 фамилий, сколько мне нужно кароче. Это упростит поиск по БД.
А ставшие ненужными столбцы я потом возможно удалю.

Редактировалось 1 раз(а), последний 2019-02-13 21:25:25
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#1590: 2019-02-13 22:09:05 ЛС | профиль | цитата
user_asm писал(а):
Это упростит поиск по БД.
Каким образом?
SQLite LIKE не работает с русским алфавитом

Это делается так:
CREATE TABLE groups(
id INTEGER PRIMARY Key,
name TEXT);

CREATE TABLE people(
id INTEGER PRIMARY Key,
fio TEXT,
id_group INTEGER);

-- Получить список работников группы :
-- в столбик
SELECT fio FROM people WHERE id_group=%1;
-- в одну строку через запятую
SELECT group_concat(fio) FROM people WHERE id_group=%1;
-- в одну строку через #
SELECT group_concat(fio, "#") FROM people WHERE id_group=%1;

Редактировалось 4 раз(а), последний 2019-02-13 22:20:09
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)