SQLite как проверить есть ли таблица #453877


#0 by Aleksey_3
При создании таблицы там просто CREATE TABLE IF NOT EXISTS А когда нужно делать Select? Как проверить есть ли нужная нам таблица. Пока что нашел 2 варианта. 1. Через попытку 2. Через отдельный запрос. ЕстьТаблица= SELECT count(name) FROM sqlite_master where name='НужноеИмяТаблицы' А есть ли попроще вариант, в одну строку так сказать
#1 by RKx
подключаться к базе всё равно придется...
#2 by Aleksey_3
Ну так это понятно. Просто если делать select к таблице которой не существует, то ошибку выдает Еще один вариант Перед selectом делать create table if not exists. Тогда точно таблица будет существовать Ну или как пошутил один шутник If drope table ... then "Таблица существовала"
#3 by RKx
А сделать запрос к системной на наличие нужной?
#4 by RKx
типа SELECT * FROM    dbo.sysobjects
#5 by Aleksey_3
Можно и запрос, см п.2 в ЕстьТаблица= SELECT count(name) FROM sqlite_master where name='НужноеИмяТаблицы' .
#6 by RKx
Ну это и есть в одну строку. Что нужно-то тогда????
#7 by Aleksey_3
Это 2 запроса сначала проверка, если есть, то select к таблице. А хотелось бы обойтись без лишних телодвижений
#8 by RKx
Лучше так, но быть твердо уверенным. Или создавать её при входе в систему, или проверять при входе,... смотря что за таблица, как часто к ней обращение. Если при проведении дока каждая строка тыкается - одно (проверить перед проведением), а если отчет вызывает один раз - другое...
#9 by Aleksey_3
Это отчет. В базу пишется лог изменений документов. Соответственно отчет должен показать, что конкретно с этим документом делали.
#10 by RKx
Для каждого дока своя таблица?
#11 by Aleksey_3
Для каждого вида документа
#12 by orefkov
Проверять существовние таблицы в sqlite правильно через запрос к sqlite_master. Это официальный путь. Однако, наличие таблицы еще не гарантирует наличие в ней полей, используемых в запросе, так что я бы не парился, и оборачивал бы все в попытку.
#13 by Torquader
А что нельзя всё хранить в одной таблице ? Если что-то меняется, то мы записываем ссылку на документ и то, что изменилось (точнее, старые значения того, что изменилось, так как новые в нашей базе).
#14 by b_ru
SELECT count(name) FROM sqlite_master where name='НужноеИмяТаблицы' вообще это правильный вариант, так и принято проверять
#15 by Aleksey_3
В моем случае гарантирует, так как туда пишется лог определенной структуре, поэтому нужно только таблица Можно, но мне кажется читать данные легче с маленькой таблице, чем с одной большой. Так значит так. Просто решил поинтересоваться может еще есть варианты.
#16 by Aleksey_3
Кстати чтобы темы не плодить. А как мне одновременно обратиться к таблице в памяти и на диске? Т.е. организовать запрос
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С