Это самый типичный случай для делового приложения - закачка контента в БД. Ситуация может быть самая разбанальная - вы ищете варианты квартир или еще что-то в газетах типа "Авизо". Можно сканировать саму газету, можно листать сайт бесконечным образом, но все-таки более экономичный вариант - выкачать контент в базу данных и после программно обеспечить условия для поиска, печати или анализа информации.
NQL может получать доступ к БД тремя способами, или, как говорят, "методами": ODBC, ADO и OLEDB. По умолчанию стоит ODBC, и поскольку это работает нормально, нет никаких причин изменять это умолчание. Для Java-версии, соответственно, предусмотрено несколько методов с участием JDBC.
Для операций можно использовать SQL-конструкции и дополнительно - nextrecord для выбора следующей записи. Поля результирующего набора при выборе по SELECT отображаются в переменные автоматически. Nextrecod тоже автоматически, в духе NQL, устанавливает код ошибки, так что код, выполняющий запрос и обрабатывающий результат, выглядит тривиально:
opendb "phonebook" select "SELECT Contacts WHERE State='NY'"; while { show Name, Street, City, State, Zip, Phone nextrecord }
Рассмотрим практический пример - пусть наша программа получает данные из газеты объявлений и складывает их в таблицу БД. Как всегда, можно "пойти другим путем" - выкачать весь раздел или даже газету и потом в комфортной обстановке разбирать ее на молекулы. Либо же прямо в момент выкачки анализировать и выбирать нужные строки. Мы продемонстрируем второй вариант - то есть выкачаем один раздел с фильтрацией строк. Допустим, мы ищем б/у Hi-Fi технику.
Наша программа может выглядеть так:
record #avizorec=issue, rubric, rubname, pline
get 'http://www.aviso.com.ua/aviso/browse.asp' match "ads/kiv/{codename}.asp" pop
push codename match '{prefix}/' pop
get "http://www.aviso.com.ua/aviso/ads/kiv/" &codename&".asp" match "HRef=\"{pagename}.asp\">Rubric #620" pop push pagename match "{dbsec}/" pop