Подписаться на получение новых статей на почту:

SQLite. Встраиваем в программу на java. Шаг №52

Всем привет. Продолжим цикл статей по созданию приложения для логгера ( контроллера сбора данных ). Как Вы помните, в прошлой статье, мы научились использовать интерфейс JDBC для управления базой данных, через сервер, непосредственно из java-приложения. К сожалению СУБД MySQL не встраивается в программу на данном языке. А т.к. наш дальнейший шаг сделать программу более автономной, то мы в качестве СУБД выберем SQLite. Давайте познакомимся с этим приложением. SQLite -  встраиваемая кроссплатформенная реляционная база данных, поддерживающая команды SQL и стандарт SQL92.

Данный движок представляет собой библиотеку, которая интегрируется в программу и в качестве протокола обмена использует вызовы функций данной библиотеки. Сама база данных представляет один файл, и хранится на той машине, где используется программа. Также СУБД  доступна в исходниках на СИ, без всяких ограничений на использование в отличие от MySQL (мы с Вами рассматривали в статье №48 ), и мы можем ее скомпилировать на свое усмотрение.  Либо уже скомплированным файлом – динамической библиотекой sqlite.dll, которая не привязана к языку. Мы с Вами воспользуемся готовой библиотекой для языка java: sqlite-jdbc-3.7.2.jar (версию на свое усмотрение), куда уже входит данный файл, ядро нашей программы. И конечно же мы будем использовать те же универсальные методы класса JDBC с которым мы познакомились в прошлой записи.

Ну что ж вкратце все. Приступим к практической части. Т.к. все предыдущие посты мы использовали MySQL, то давайте опять сначала создадим базу данных но уже в SQLite. Значит создать мы можем тремя способами используя консоль sqlite3.exe, которую качаем на странице загрузки http://sqlite.org/download.html,  используя  визуальный менеджер, либо прямо с программы. Для ознакомления рассмотрим сначала первый вариант — консоль. Но перед этим дорогие друзья я приведу список используемых комманд, которые немного отличаются от MySQL. Итак :

.exit  или  .quit — выход из программы;
.header (s) — ON|OFF включить/выключить показ заголовков столбцов;
.import FILE TABLE — импорт данных из файла FILE в таблицу TABLE;
.mode MODE —  установка режима вывода: line (s), column (s), insert, list, html и других;
.separator STRING —  изменить строку разделитель колонок;
.show —  показать значения установленных переменных.

Перед тем как начать работу, необходимо шрифт консоли перевести в Lucida Console (Свойства -> Шрифт),  а также изменить кодировку командой chcp 1251, по умолчанию 866. Ну все — поехали. Запускаем файл sqlite3.exe. Для создания базы данных я ввожу команду .open logger.db, которая открывает базу данных, если ее нет то создает, как на рисунке нижеСоздание БД SQLite.

Теперь давайте создадим таблицу. Таким же самым образом как в статье №50, за исключением указания типа таблицы и кодировки так как данная база данных эти указания не понимает.

CREATE TABLE Log (T1 FLOAT (3,1), T2 FLOAT (3,1), TIMELog VARCHAR (5), DATELog VARCHAR (8), PRIMARY KEY (TIMELog, DATELog)); На рисунке ниже результат.

Создание таблицы SQLite

Первые два пункта мы выполнили,  давайте теперь загрузим данные с того же текстового файла что и в предыдущих статьях. Вот здесь мы используем команду .import C:/loq.txt Log. На рисунке ниже результат выполнения 3-го шага, как видите не совсем удачный. Для исправления ситуации необходимо настроить параметры установленных переменных. Просмотрим их — шаг 4. Где мы видим строку .colseparator:'';' — что значит разделитель Загрузка данных SQLiteколонок «;». У нас же в таблице разделитель табуляция. Изменим данный параметр: .sеparator « \t» и снова произведем импорт данных — шаг 5. На рисунке видно что из 4-х строк загружено 2, а две остальные у нас имеют одинаковые ключи, т.е. они автоматически отсеялись, в отличие от MySQL, где необходимо было вводить команду IGNORE.  И последний 6-й шаг: выведем данные таблицы на консоль. Но перед этим опять обратим взор на установленные переменные и изменим режим вывода колонки и показ заголовков столбцов следующими командами соответственно:

.mode column
.headers on

Первые 4-ри рядка в таблице, это данные которые занеслись с разделителем по умолчанию, последние два  с настроенными параметрами, и проигнорированными строками с одинаковыми ключами. Выход из консоли осуществляется командой .quit.

Теперь перейдем к приложению на java. И проделаем также все действия с нуля, но уже из программы.

Выше я писал про библиотеку, так вот ее необходимо подключить к проекту. Как это делать мы знаем из статьи №46. Подключили.  Теперь воспользуемся программой из предудущей статьи. Переписывать классы не буду, просто укажу измененные строки. Для начала в главном классе readLog.
Мы просто изменим драйвер и путь к базе данных:
/*Указываем драйвер, размещение базы данных,пароль и имя пользователя*/
baza = new conMySQL («org.sqlite.JDBC», «jdbc:sqlite:logger.db»);

Также обратите внимание, если база еще не создана, то она автоматически создается. Рисунок ниже.

Создание БД SQLite java

Как вы заметили из строки выше мы передали только два параметра, не хватает пользователя и пароля — их просто нет. Поэтому переделаем конструктор в классе conMySQL, просто удалим два последних параметра. А также добавим в метод, отвечающий за возврат информации из базы данных, пару запросов. Первый по созданию таблицы, второй по ее данными командой INSERT.

 

public conMySQL (String driver, String url) /*Конструктор*/
/*Возврат информации из базы данных*/
Vector<Vector<Object>> retVector = new Vector<Vector<Object>>();
         try{
               Statement st = con.createStatement (); /*поле для обращения к базе данных с запросом*/
               st.execute («CREATE TABLE if not exists 'Log' (T1 FLOAT (3,1), T2 FLOAT (3,1), TIMELog VARCHAR (5), DATELog VARCHAR (8), PRIMARY KEY (TIMELog, DATELog));»);
               st.execute ("insert into 'log' ('T1', 'T2', 'TIMELog', 'DATELog') values (22.3,33.5,'12.56', '13.01.16'); ");}

На рисунке ниже результат создания таблицы в базе данных, и вывод информации в таблицу приложения.

Создание таблицы SQLite javaНа данном этапе, если мы захотим внести строку с идентичными ключами, то наша программа, как говорят «взорвется» — этот момент мы исправим попозже. На этом эксперименты  с данной СУБД пока закончим, мы добились поставленной задачи, а именно встроили в программу движок. И в следующих статьях: перед подключением модели логгера к приложению мы должны рассмотреть способ передачи информации с Proteus через COM-порт (статья №53), ну и в конце я постараюсь «причесать» всю программу, подстроить под эту модель, если вы забыли то просмотрите под что изначально делался проект. И обязательно опубликую полученный результат. А также наметим последующий план действий в курсе прикладное программирование с нуля. На этом на сегодня и остановимся. Всем пока.

Просмотрено 2556 раз.

Я на Google+

SQLite. Встраиваем в программу на java. Шаг №52: Один комментарий

  1. Очень познавательно. Такой простой переход на другую базу из программы. Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting