|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
БД файлов с описанием
Доброго времени суток. Делаю большой проект (для меня он большой и сложный) и так получилось что необходимо подключать БД, так как данных будет много. Создал БД и две таблицы. В первой таблице должен быть список файлов. При запуске функция сканирует каталог и необходимо это записать в таблицу без повторяемых записей при следующем запуске.
http://hexadecimal.url.ph/db.7z Последний раз редактировалось Kaktuz, 28.08.2015 в 01:50. |
#2
|
|||
|
|||
Сделай временную таблицу. При запуске вставляешь записи туда. Потом просто переносишь только те записи, которых нет в основной таблице. Читать SQL по ключевому слову EXISTS.
|
#3
|
|||
|
|||
Я не могу разобраться с тем как объединить Delphi и Access. Какие компоненты использовать, через какой компонент лучше добавлять / удалять / изменять данные в таблице. Как получить данные из строки таблицы и вывести их допустим в Label1. Основная масса примеров ссылаются на то что ADOConnection подключились, ADOQueri сделали запрос в DataSource и вывели в DBGrid. Но мне не нужно DBGrid это еще один объект с которым я не знаю как работать и общее изучение займет много времени. Нужно чтобы все было проще и понятнее как в PHP. Сделал запрос, получил массив запрашиваемой строки и выводи потом что и куда хочешь. Я уже недель колупаю, а результат нулевой.
|
#4
|
|||
|
|||
Просто ничего не бывает.
ADOConnection нужен для подсоединения к БД. ADOQuery - для выполнения SQL запросов, результатом будет набор записей (собственно, та информация, котрую ты из БД хочешь получить) DataSource - просто посредник между набором данных и компонентами отображения. DBGrid - это просто отображение данных. Можно и без БД обойтись. Создай TStringList при старте приложения и подгрузи туда из файла текущий список (если файл существует). При закрытии - сохраняешь. В принципе, если не ошибаюсь, можно просто использовать Key-Value возможности StringList'а. Должно хватить для твоей задачи. Код:
const dataFile : String = 'c:\myfile.txt'; type TForm1 = class(TForm) ... Lst : TStringList; end; ... procedure TForm1.FormCreate(Sender : TObject); begin Lst := TStringList.Create; If FileExists(dataFile) Then Lst.LoadFromFile(dataFile); end; procedure TForm1.FormDestroy(Sender : Tobject); begin Lst.SaveToFile(dataFile); Lst.Free; end; procedure TForm1.Button1Click(Sender : TObject); begin // Loop through files Lst.Values[filename] := 'aaa'; end; |
#5
|
|||
|
|||
Финальная задача куда более масштабная. И список файлом может достигать 5000. Я изначально так и делал, подключил TIniFile для удобства, но когда файлов стало больше 400, он перестал читать остальные. Как выяснилось это из-за маленького буфера чтения. Вроде можно увеличить, но при таком количестве файлов посоветовали использовать БД, а как не сказали)) Единственно посоветовали использовать две таблицы. Список файлов и список данных.
Таблица #1 Содержит три важных параметра id - уникальный номер, через него будем читать данные с второй таблицы. file - путь к файлу condition - состояние файла Таблица #2 id - уникальный номер для поиска string - данные text1 - данные text2 - данные Ниже привет рисунок работы, как-то так должно получить и вроде будет нормально. При чтении хочу добавить условие. Если файла нет, спросить пользователя об удалении данных связанных с этим файлов, тоесть удалить данные с обоих таблиц. Ну и конечно удобно когда список файлов и данные будут в одном файле. Удобно переносить. Кстати заметил такую особенность. Если тип ячейки "текст" то его длина максимум 255. Если установить тип "memo" то в delphi при отображении данных в таблице просто написано "(MEMO)". Эм... Это вообще нормально? Я не могу нормально записать строку длинее 255 символов чтоли? Последний раз редактировалось Kaktuz, 28.08.2015 в 23:45. |
#6
|
|||
|
|||
Ну тогда читай, что я тебе ответил в первый раз и разбирайся с доступом к БД.
|
#7
|
||||
|
||||
Цитата:
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |