Показать сообщение отдельно
  #20  
Старый 02.09.2015, 00:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В Дельфи - делаем запрос и получаем RecordSet (который DataSet и его наследники). Навигация по строкам выполняется с помощью методов First, Next, Last и т.д. Доступ к полям текущей записи осуществляется либо по индексу через свойство Fields, либо по имени через метод FieldByName.
Например:
Код:
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select ID, Name from MyTable');
ADOQuery.Open;
ADOQuery.First;
While Not ADOQuery.EoF Do
  Begin
    S := ADOQuery.Fields[0].AsString;
    S := S + ', ' + ADOQuery.FieldByName('Name').AsString;
    ShowMessage(S);
    ADOQuery.Next;
  End;
ADOQuery.Close;

А таблицу надо создавать в БД.
Фактически, у тебя в БД для файлов должно быть 2 таблицы. Одна "боевая" и вторая - для вставки. Здесь термин "временная" использовался в том смысле, что данные буду прокачиваться через нее, а с точки зрения БД она вполне себе постоянная. Сам алгоритм выглядит примерно так:
0. В БД есть 2 таблицы одинаковой структуры: MyFiles и MyFilesTemp
1. Чистим таблицу MyFilesTemp [DELETE FROM MyFilesTemp].
2. Вставляем в таблицу MyFilesTemp все найденные файлы [INSERT INTO MyFilesTEMP (ID, Name) VALUES (:ID, :Name)]
Если ID автоинкрементное, то его вставлять не надо.
3. "Переливаем" в основную таблицу MyFiles только те файлы, которых в ней нет [INSERT INTO MyFiles f SELECT t.ID, t.Name FROM MyFilesTemp t WHERE NOT EXIST (SELECT v.Name FROM MyFiles v WHERE v.Name = t.Name)]
Синтаксис надо проверить для конкретной реализации БД. Может в ней есть MINUS или EXCEPT, что упростит запрос.
Ответить с цитированием