# FMPDatabase

interface FMPDatabase : FMPObject

Представляет собой локальную базу данных. Используется SQLite.

#### Since

21.04.01

#### See also

FMPDatabase.Builder

#### Samples

    import ru.fsight.fmp.FMP
    import ru.fsight.fmp.FMPDatabase
    import ru.fsight.fmp.FMPResult
    import ru.fsight.fmp.FMPUser
    fun main() {
       //sampleStart
       /*
     * Пример создания объекта БД в постоянном хранилище пользователя.
     */
    val database: FMPDatabase = fmp.database // Создать Builder.
    	.path(user.storage + "/example.db")  // Указать путь к БД.
    	.build()                             // Создать FMPDatabase.
       //sampleEnd
    }

    import ru.fsight.fmp.FMP
    import ru.fsight.fmp.FMPDatabase
    import ru.fsight.fmp.FMPResult
    import ru.fsight.fmp.FMPUser
    fun main() {
       //sampleStart
       /*
     * Создание или открытие базы данных.
     * Если БД не существует по указанному пути, то она будет создана.
     */
    val openOrCreate: Boolean =
    	database.open().result  // True если БД была открыта или создана. False если нет прав на запись или иная ошибка.
    val close: Boolean = database.close().result // True если база данных була успешно закрыта.
    val delete: Boolean = database.drop().result // True если база данных была удалена с файловой системы.
       //sampleEnd
    }

    import ru.fsight.fmp.FMP
    import ru.fsight.fmp.FMPDatabase
    import ru.fsight.fmp.FMPResult
    import ru.fsight.fmp.FMPUser
    fun main() {
       //sampleStart
       /*
     * Пример выполнение прямого SQL запроса к БД.
     */
    val query: String = "DROP TABLE my_table;"
    val result1: Boolean = database.query(query).result // True если запрос выполнен успешно.

    val select: String = "SELECT * FROM my_table;"
    val result2: List<Map<String, String>> =
    	database.select(select).result // Элемент списка - строка БД, где мапа - связь колонка-значение для строки.
       //sampleEnd
    }

    import ru.fsight.fmp.FMP
    import ru.fsight.fmp.FMPDatabase
    import ru.fsight.fmp.FMPResult
    import ru.fsight.fmp.FMPUser
    fun main() {
       //sampleStart
       /*
     * Пример получения данных из БД.
     */
    val query: String = "SELECT * FROM my_table;"
    val result: List<Map<String, String>> = database.select(query).result
       //sampleEnd
    }

    import ru.fsight.fmp.FMP
    import ru.fsight.fmp.FMPDatabase
    import ru.fsight.fmp.FMPResult
    import ru.fsight.fmp.FMPUser
    fun main() {
       //sampleStart
       /*
     * Пример объединения нескольких БД для общего запроса.
     * В данном случае db1 будет главной БД, к которой будем отправлять запросы.
     */
    val query: String =
    	"SELECT $db1.table1.id, $db2.table2.data FROM $db1.table1 JOIN ON $db1.table1.id = $db3.table3.id;"
    val attach: FMPResult<Boolean> = db1.attach(listOf(db2, db3))
    val result: List<Map<String, String>> = db1.select(query).result
       //sampleEnd
    }

## Types

Builder
Link copied to clipboard
abstract class Builder : FMPObject.Builder

Смотри FMPObject.Builder. Обязательные параметры: path.

## Properties

name
Link copied to clipboard
abstract val name: String

Название базы данных. Извлекается из path.

path
Link copied to clipboard
abstract val path: String

Полный путь к базе данных на локальной файловой системе.

## Functions

attach
Link copied to clipboard
abstract fun attach(vararg databases: FMPDatabase): FMPResult<Boolean>
abstract fun attach(databases: List<FMPDatabase>): FMPResult<Boolean>

Присоединить базы данных к указанной базе через ATTACH DATABASE.

close
Link copied to clipboard
abstract fun close(): FMPResult<Boolean>

Закрыть базу данных и очистить кэш (*-shm and *-wal файлы).

drop
Link copied to clipboard
abstract fun drop(): FMPResult<Boolean>

Закрыть и удалить базу данных и кэш с файловой системы.

equals
Link copied to clipboard
abstract operator override fun equals(other: Any?): Boolean

Сравнить объекты между собой.

hashCode
Link copied to clipboard
abstract override fun hashCode(): Int

Хэш-код объектов. В отличие от equals он будет одинаков для объектов с одинаковыми ключевыми параметрами, но созданными от разных объектов FMP.

open
Link copied to clipboard
abstract fun open(): FMPResult<Boolean>

Открыть базу данных.

query
Link copied to clipboard
abstract fun query(query: String): FMPResult<Boolean>

Выполнить SQL запрос в базу.

rebuild
Link copied to clipboard
abstract override fun rebuild(): FMPDatabase.Builder
select
Link copied to clipboard
abstract fun select(query: String): FMPResult<List<Map<String, String>>>

Выполнить SQL запрос в базу с получением данных.

toString
Link copied to clipboard
abstract override fun toString(): String

Получить ключевые параметры объекта в виде строки.